linux性能优化

Linux性能优化总结 阅读详情

Linux 性能分析最重要的参考资料
在这里插入图片描述

todo 13,14

一、CPU性能

在这里插入图片描述
在这里插入图片描述

平均负载

简单理解为,平均负载其实就是平均活跃进程数(包括等待cpu的进程)
比如当平均负载为 2 时,意味着什么呢?
	在只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。
	在 4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲。
	而在只有 1 个 CPU 的系统中,则意味着有一半的进程竞争不到 CPU
一般当平均负载高于 CPU 数量 70% 的时候,你就应该分析排查负载高的问题了

上下文

CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU上下文(CPU 寄存器和程序计数器)
在这里插入图片描述
定义

CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加
载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,
运行新任务。

场景

  1. 进程上下文切换、
    进程的切换只能发生在内核态,进程的上下文切换就比系统调用时多了一步:需要先把该进程的虚拟内存、栈等保存下来,再保存当前进程的内核状态和 CPU 寄存器,;而加载了下一进程的内核态后,还需要刷新进程的虚拟内存和用户栈。
    根据 Tsuna 的测试报告,每次上下文切换都需要几十纳秒到数微秒的 CPU 时间
  2. 线程上下文切换(线程与进程最大的区别在于,线程是调度的基本单位,而进程则是资源拥有的基本单位)
    线程的上下文切换其实可以分为两种情况:
    第一种, 前后两个线程属于不同进程。此时,因为资源不共享,所以切换过程就跟进程上下文切换是一样。
    第二种,前后两个线程属于同一个进程。此时,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据
  3. 中断上下文切换。
    跟进程上下文不同,中断上下文切换并不涉及到进程的用户态。所以,即便中断过程打断了一个正处在用户态的进程,也不需要保存和恢复这个进程的虚拟内存、全局变量等用户态资源。中断上下文,其实只包括内核态中断服务程序执行所必需的状态,包括 CPU 寄存
    器、内核堆栈、硬件中断参数等。

系统调用,需要用户态内核态切换,所以,一次系统调用的过程,其实是发生了两次 CPU 上下文切换,系统调用过程中一直是同一个进程在运行,跟我们通常所说的进程上下文切换是不一样的,通常称为特权模式切换

自愿上下文切换:是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。
非自愿上下文切换:则是指进程由于时间片已到等原因,被系统强制调度,进而发生 的上下文切换。比如说,大量进程都在争抢 CPU
时,就容易发生非自愿上下文切换

cpu使用率 & 命令

查看cpu使用率过高的进程

top (总体,有细分进程的用户态 CPU 和内核态 CPU)
ps  则只显示了每个进程的资源使用情况
	 ps -aux|grep  java
pidstat (每个进程的详细情况,用户态 CPU 和内核态 CPU)

分析cpu问题
perf top 实时展示了系统的性能信息(各个函数占用cpu时钟数)
perf record 则提供了保存数据的功能
perf report 解析展示保存后的数据

== cpu问题:借助 top、pidstat 等工具,确认引发 CPU 性能问
题的来源;再使用 perf 等工具,排查出引起性能问题的具体函数==

top 并没有细分进程的用户态 CPU 和内核态 CPU。那要怎么查看每个进程的详细情况呢
pidstat 1 5:pidstat 命令,就间隔 1 秒展示了进程的 5 组 CPU 使用率
pidstat 1 5

再使用 perf top 工具,定位应用内部函数的问题

请求某个接口
并发 10 个请求测试 Nginx 性能,总共测试 100 个请求
ab -c 10 -n 100 http://192.168.0.10:8080/

查看哪个代码导致cpu使用率100%(部署个项目模拟下)

请求服务,查看能承受请求数
ab -c 10 -n 100 http://10.101.38.18:8080/(并发 10 个请求测试 Nginx 性能,总共测试 100 个请求)
top查看cpu使用率
perf top -g -p 21515(-g 开启调用关系分析,-p 指定进程号)
按方向键切换到 java进程,再按下回车键展开调用关系

用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进 程的性能问题。
系统 CPU高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调 用的性能问题。
I/O 等待 CPU 高,说明等待 I/O的时间比较长,所以应该着重排查系统存储是不是出现 了 I/O 问题。
软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的CPU,所以应该着重 排查内核中的中断服务程序。

cpu升高top等命令却看不到

可能是短时进程导致的,短时应用的运行时间比较短,很难在 top 或者 ps 这类展示系统概要和进程快照的工具中发现

进程状态

top ,可以查看进程的状态,这些状态包括运行(R)、空闲(I)、不可中断状态(D)、可中断睡眠(S)、僵尸(Z)以及暂停(T)等

  1. 不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不允许其他进程或中断打断这个进程。进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。

  2. 僵尸进程表示进程已经退出,但它的父进程还没有回收子进程占用的资源。短暂的僵尸 状态我们通常不必理会,但进程长时间处于僵尸状态,就应该注意了,可能有应用程序 没有正常处理子进程的退出。

io升高

iowait 高不一定代表 I/O 有性能瓶
颈。当系统中只有 I/O 类型的进程在运行时,iowait 也会很高,但实际上,磁盘的读写远
没有达到性能瓶颈的程度。
因此,碰到 iowait 升高时,需要先用 dstat、pidstat 等工具,确认是不是磁盘 I/O 的问
题,然后再找是哪些进程导致了 I/O。
等待 I/O 的进程一般是不可中断状态,所以用 ps 命令找到的 D 状态(即不可中断状态)
的进程,多为可疑进程。但这个案例中,在 I/O 操作后,进程又变成了僵尸进程,所以不
能用 strace 直接分析这个进程的系统调用。
这种情况下,我们用了 perf 工具,来分析系统的 CPU 时钟事件,最终发现是直接 I/O 导
致的问题。这时,再检查源码中对应位置的问题,就很轻松了。

僵尸进程如何处理

是找出父进程,然后在父进程里解决。
父进程的找法,就是运行 pstree 命令

-a 表示输出命令行选项 p 表 PID s 表示指定进程的父进程
$ pstree -aps 3084

而僵尸进程的问题相对容易排查,使用 pstree 找出父进程后,去查看父进程的代码,检查
wait() / waitpid() 的调用,或是 SIGCHLD 信号处理函数的注册就行了。

软中断(类比送外卖,打电话(硬中断),处理其他发票(软中断))

中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。
由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行
中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。

软中断实际上是以内核线程的方式运行的,Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,可以通过查看
/proc/softirqs 来观察软中断的运行情况。

Linux 中的中断处理程序分为上半部和下半部:
	上半部对应硬件中断,用来快速处理中断。,特点是快速执行
	下半部对应软中断,用来异步处理上半部未完成的工作。,特点是延迟执行

网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就
应该调用中断处理程序来响应它。你可以自己先想一下,这种情况下的上半部和下半部分 别负责什么工作呢?
对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬
件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进 一步的处理。
而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据 进行逐层解析和处理,直到把它送给应用程序。

看10,

如何快速分析cpu问题(top、vmstat和 pidstat)

性能指标
CPU 使用率
负载
进程上下文切换

性能工具

  1. 第一个维度,从 CPU 的性能指标出发。也就是说,当你要查看某个性能指标时,要清楚知道哪些工具可以做到
    在这里插入图片描述

在这里插入图片描述
2. 第二个维度,从工具出发。也就是当你已经安装了某个工具后,要知道这个工具能提供哪些指标。

在这里插入图片描述

二、内存性能

在这里插入图片描述
内存地址

查看内存使用
可以用 free 和 top 、ps 等性能工具

内存

进程来说,它能看到的其实是内核提供的虚拟内存,虚拟地址空间的内部又被分为内核空间和用户空间
在这里插入图片描述
虽然每个进程的地址空间都包含了内核空间,但这些内核空间,其实关联的都是相同的物理内存
并不是所有的虚拟内存都会分配物理内存,只有那些实际使用的虚拟内存才分配物理内存,并且分配后的物理内存,是通过内存映射来管理的
在这里插入图片描述
虚拟内存分布
在这里插入图片描述

Swap
其实就是把一块磁盘空间当成内存来用。它可以把进程暂时不用的数据存储到磁盘中(这
个过程称为换出),当进程访问这些内存时,再从磁盘读取这些数据到内存中(这个过程
称为换入)。

查看内存使用(free, top,(M按内存排序),ps)

top
VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。
RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。
SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。
%MEM 是进程使用物理内存占系统总内存的百分比。

buffer & cache

Buffers (对将要写入磁盘数据的缓存)是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据,通常不会特别大(20MB 左右)。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。

Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。这样,下次访问这些文件数据时,就可以直接从内存中快速获取,而不需要再次访问缓慢的磁盘。

写磁盘用到了大量的 Buffer,Buffer 和 Cache 都在增长
写文件时会用到 Cache 缓存数据

Buffer 是对磁盘数据的缓存,而 Cache 是文件数据的缓存,它们既会用在读请求中,也会用在写请求中。

读写普通文件时,会经过文件系统,由文件系统负责与磁盘交互;而读写磁盘或者分区时,就会跳过文件系统,也就是所谓的“裸I/O“。这两种读写方式所使用的缓存是不同的,也就是文中所讲的
Cache 和 Buffer 区别。

内存泄露了该如何定位处理

应用程序可以访问的用户内存空间,由只读段、数据段、堆、栈以及文件映射段等组成。
其中,堆内存和内存映射,需要应用程序来动态管理内存段,所以我们必须小心处理
vmstat 观察free在减少
/usr/share/bcc/tools/memleak -a -p $(pidof app)(跟踪系统或指定进程的内存分配、释放请求)

swap(内存数据存储到磁盘中)

笔记本电脑的休眠和快速开机的功能,也基于 Swap

在内存资源紧张时,Linux 通过直接内存回收和定期扫描的方式,来释放文件页和匿名页,以便把内存分配给更需要的进程使用。
文件页(缓存和缓冲区)的回收比较容易理解,直接清空,或者把脏数据写回磁盘后再释放。
而对匿名页的回收(应用程序动态分配的堆内存),需要通过 Swap 换出到磁盘中,下次访问时,再从磁盘换入到内存中。

free可以查看swap的使用情况

三、I/O性能

在这里插入图片描述
在这里插入图片描述

文件系统

在这里插入图片描述

索引节点和目录项

磁盘为系统提供了最基本的持久化存储。
文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构

Linux 文件系统为每个文件都分配两个数据结构,索引节点(indexnode)和目录项(directory entry)
目录项,简称为 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构,换句话说,索引节点是每个文件的唯一标志,而目录项维护的正是文件系统的树状结构。目录项和索引节点的关系是多对一
在这里插入图片描述

虚拟文件系统

在这里插入图片描述
不同文件系统

  1. 基于磁盘的文件系统(如:ext4)
  2. 基于内存的文件系统(如:/proc)
  3. 网络文件系统(如:/nfs)
    挂载到/根目录下才能使用,把文件系统挂载到挂载点后,你就能通过挂载点,再去访问它管理的文件了

“Linux 一切皆文件”的深刻含义。无论是普通文件和块设备、还是网络套接字和管道等,它们都通过统一的 VFS 接口来访问。

磁盘I/O

其实在 Linux 中,磁盘实际上是作为一个块设备来管理的,也就是以块为单位读写数据,并且支持随机读写

通用块层
和虚拟文件系统 VFS 类似,为了减小不同块设备(磁盘)的差异带来的影响,Linux 通过一个统一的通用块层,来管理各种不同的块设备。

I/O 栈

文件系统层,包括虚拟文件系统和其他各种文件系统的具体实现。它为上层的应用程序,提供标准的文件访问接口;对下会
	通过通用块层,来存储和管理磁盘数据。(屏蔽不同文件系统,磁盘,内存、网络)
通用块层,包括块设备 I/O 队列和 I/O 调度器。它会对文件系统的 I/O 请求进行排队,再通过重新排序和请求合并,然后才
	要发送给下一级的设备层。(屏蔽不同块设备(磁盘))
设备层,包括存储设备和相应的驱动程序,负责最终物理设备的 I/O 操作。

磁盘性能指标(25,操作)

使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求
IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
吞吐量,是指每秒的 I/O 请求大小。
响应时间,是指 I/O 请求从发出到收到响应的间隔时间。

在数据库、大量小文件等这类随机读写比较多的场景中,IOPS 更能反映系统的整体性能
在多媒体等顺序读写较多的场景中,吞吐量才更能反映系统的整体性能。

四、网络性能

在这里插入图片描述
在这里插入图片描述

基础

在 Linux 中,我们实际上使用的是另一个更实用的四层模型,即 TCP/IP 网络模型
在这里插入图片描述
封装
在这里插入图片描述
过程
在这里插入图片描述

网络性能指标(34 操作)

带宽,表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。
吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。
延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP握手延时),或一个数据包往返所需的时间(比如 RTT)。
PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS
可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。

C10,C1000问题(epoll)

虚拟文件系统(VFS)吧,使用套接字接口的时候,也是要分配一个文件描述符,然后后续所有的I/O都通过这个文件描述符来操作(包括IO模型中要判断可读写状态)

五、命令

工具

stress 是一个 Linux 系统压力测试工具,可以模拟平均负载升高,io等待,线程多等场景
sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能
	mpstat (Multiprocessor Statistics)是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标
	pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
		pidstat -w 5(查看每个进程上下文切换)参数:cswch/s(自愿切换) nvcswch/s(非自愿切换,时间片到)			
vmstat 用来分析系统的内存使用情况
	可以查看整体的上下文切换情况(每秒cs(context switch)上下文切换,in(interrupt,中断次数))
sysbench 是一个多线程的基准测试工具
perf 是 Linux2.6.31 以后内置的性能分析工具
ab(apache bench)是一个常用的 HTTP 服务性能测试工具,模拟请求的客户端,测试性能
dstat 是一个新的性能工具,它吸收了 vmstat、iostat、ifstat 等几种工具的优点,可以同时观察系统的 CPU、磁盘 I/O、网络以及内存使用情况
strace 正是最常用的跟踪进程系统调用的工具

///////////

cachestat 提供了整个操作系统缓存的读写命中情况。
cachetop 提供了每个进程的缓存命中情况。
pcstat 这个工具,来查看文件在内存中的缓存大小以及缓存比例
	pcstat /bin/ls

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

stress --cpu 1 --timeout 600 (模拟一个 CPU 使用率 100%,600秒)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
模拟过程

模拟CPU压力:stress --cpu 1 --timeout 600
观察负载变化:watch -d uptime
观察cpu使用率变化:mpstat -P ALL 5
查看是哪个进程导致:pidstat -u 5 1

模拟多线程切换:sysbench --threads=10 --max-time=300 threads run
观察上下文切换:vmstat 1
观察那个进程导致:pidstat -w -u 1

命令

uptime : 查看1,5,15分钟系统负载
	watch -d uptime(uptime 查看平均负载的变化情况)
watch:可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果
	-d,高亮变化
	watch -d cat /proc/interrupts
pidstat -u 5 1(线程情况间隔 5 秒后输出一组数据,-w 参数表示输出进程切换指标,-u 参数则表示输出 CPU 使用指标)
pidstat -p 24344  指定pid未24344的进程
pidstat -d -p 4344 1 3(-d 展示 I/O 统计数据)
vmstat 5 (内存使用情况,整体情况)
top 显示了系统总体的 CPU 和内存使用情况,以及各个进程的资源使用情况。
	us 用户空间占用CPU百分比

sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi 硬件中断
si 软件中断
st: 实时
ps 则只显示了每个进程的资源使用情况。

  1. 进程状态

D 不可中断 uninterruptible sleep (usually IO) Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源

top
ps

六、其他

Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息
proc 文件系统。它是一种内核空间和用户空间进行通信的机制,可以用来查看内核的数据结构,或者用来动态修改内核的配置
proc 文件系统同时也是很多性能工具的最终数据来源

/proc/softirqs 提供了软中断的运行情况;
/proc/interrupts 提供了硬中断的运行情况。
 /proc/stat提供的就是系统的 CPU 和任务统计信息

你只关注 CPU 的话,
	cat /proc/stat | grep ^cpu
Linux系统性能调优技巧 Linux是一款高效、稳定的操作系统,适用于各种服务器和开发环境。为了最大化Linux系统的性能,适当的调优至关重要。本篇文章将介绍一些常见的Linux性能调优方法,帮助您优化系统运行效率。 阅读详情

相关推荐

Linux性能优化

一、Linux性能指标概述 当看到性能指标时,我相信“高并发”和“响应快”一定是你最先想到的。而它们也正对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能,并直接影响了产品终端用户的体验。性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多的请求。这包含了以下一系列的步骤: 选择指标评估应用程...

Gandoph的博客 4703

linux性能分析之CPU篇

缓存的是热点的内存数据。本文介绍linux性能优化CPU相关的知识点,首先介绍了CPU相关的性能指标,接着介绍经常使用的工具如 pidstat、sar、vmstat等并演示其使用方法,最后介绍性能分析时常用的方法与策略。把系统的平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势,一般当平均负载高于 CPU 数量 70% 的时候,应该分析排查负载高的问题。3)top 输出的平均负载升高,可以跟 vmstat 输出的运行状态和不可中断状态的进程数做对比,观察是哪种进程导致的负载升高。

tecoes的博客 3473

Linux性能优化实战

你是否也曾跟我一样,看了很多书、学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点。但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的“拦路虎”。在我看来,大多数人对性能问题“投降”,原因可能只有两个。 一个是你没找到有效的方法学原理,一听到“系统”、“底层”这...

qingchunmimang的博客 871

【Linux】22、CPU 评价指标、性能工具、定位瓶颈、优化方法论:应用程序和系统

Linux CPU 评价指标、性能工具、定位瓶颈、优化方法论:应用程序和系统

呆呆的猫的博客 944

Linux性能优化可以从哪些方面入手?

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你需要这些资料,⬅专栏获取。

2401_85763952的博客 1363

Linux 之 性能优化

Linux 性能

zhixingheyi_tian的博客 1435

linux操作系统基础篇(四)

系统监控 1. 系统监视和进程控制工具—top和free1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。2) 了解使用top命令列出系统状态时,系统默认每5秒刷新一下屏幕上的显示结果。 1.第一行是任务队列信息 12:38:33 ...

weixin_30809173的博客 142

从TCGA官网获取新版count数据并精准转换为TPM的实战指南

本文详细介绍了从TCGA官网获取新版count数据并精准转换为TPM的实战指南。通过TCGAbiolinks工具下载原始count数据,结合GENCODE v36注释文件计算基因有效长度,最终实现count到TPM的标准化转换,确保数据完整性和分析可靠性。文章包含完整代码示例和常见问题解决方案,特别适合生物信息学研究人员参考。

weixin_27310417的博客 283

如何迅速分析出系统CPU的瓶颈在哪里?

内容出自极客时间专栏《Linux 性能优化实战》CPU 的性能指标那么多,CPU 性能分析工具一抓一大把,换成实际的工作场景,该观察什么指标、选择哪个性能工具呢?不要担心,今天我就以多年的性能优化经验,为你总结出一个“又快又准”的瓶颈定位套路,告诉你在不同场景下,指标工具怎么选,性能瓶颈怎么找。CPU 性能指标我们先来回顾下,描述 CPU 的性能指标都有哪些。你可以自己先找张纸,凭着记忆写一写;或...

cpongo011702 820

Unity嵌套ScrollView滑动冲突解决方案:ExecuteEvents.Execute事件透传

在Unity UGUI中,竖向与横向ScrollView嵌套时出现滑动失效,本质是EventSystem事件分发机制的拦截限制。其原理在于PointerDown被外层捕获后,后续PointerMove默认不向下透传;ExecuteEvents.Execute提供了一条绕过常规冒泡流程的官方事件旁路,支持低延迟、方向自适应的精准透传。该技术具备高兼容性与零侵入特性,广泛应用于电商商品页、内容流卡片组、多级导航等需‘列表中嵌套轮播/标签’的真实场景,是解决UGUI嵌套滚动问题的核心工程实践方案。

weixin_33164198的博客 629

Ubuntu离线情况下安装gcc编译器

Ubuntu离线情况下安装gcc编译器1.系统版本2.安装说明3.异常处理 1.系统版本 (1)Ubuntu系统版本:20.04.1LTS; (2)gcc编译器版本:gcc-9.3.0(下载链接为https://download.youkuaiyun.com/download/qq_18350351/13762214); 当前可找到的gcc最新版本为gcc-10,但是笔者在安装gcc-10版本时发现一些依赖项无法安装,因此选取了gcc-9版本。如果是在联网情况下安装,直接使用apt相关的安装指令即可。 2.安装说明 安

GreenHand的博客 3932

性能优化之: Linux Performance Optimization

Linux Performance OptimizationPerformance optimization in Linux doesnt always mean what you might think. Its not just a matter of outright speed; sometimes its about tuning the system to fit in

912

NVIDIA Jetson Orin DLA架构解析与AI推理优化实践

深度学习加速器(DLA)作为专用AI推理芯片,通过固定功能架构实现卷积、池化等神经网络操作的高效能比处理。其核心原理在于硬件级优化计算单元与数据流,相比通用GPU可提升3-5倍能效。在边缘计算场景中,DLA与GPU的异构协同成为关键,特别适合自动驾驶感知、机器人视觉等实时性要求高的应用。NVIDIA Jetson Orin平台通过结构化稀疏技术,在ResNet50等模型上实现近2倍性能提升。开发实践中需注意算子支持、精度校准等关键点,结合TensorRT工具链可充分发挥DLA在低功耗场景的独特优势。

weixin_32999557的博客 397

Linux性能优化实战案例资源下载:掌握Linux性能优化核心技巧

Linux性能优化实战案例资源下载:掌握Linux性能优化核心技巧 去发现同类优质开源项目:https://gitcode.com/ 在现代信息技术时代,Linux系统作为服务器和开发环境的基础架构,其性能优化至关重要。本文将为您详细介绍一个极具价值的开源项目——Linux性能优化实战案例资源下载,帮助您快速提升Linux性能优化的能力。 项目介绍 Linux性能优化实战案例资源下载是一个开源项目...

gitblog_06755的博客 909

GitLab教程(四):分支(branch)和合并(merge)

命令进行合并时,Git具备一定的智能自动化处理能力:如果一个分支仅修改了文件A,而另一个分支独立地修改了文件B,Git能够无缝整合这些更改,自动完成合并过程——即最终的代码既包含了对A文件的修改也包含了对B文件的修改。同样地,若两个分支虽然都修改了同一个文件,但涉及的是文件中互不重叠的部分,比如一个改动发生在第一行,另一个则在第二行,Git同样能巧妙地自动合并这些非冲突性修改。获取了远程分支的最新变化,或者当你想要合并本地的一个分支到当前分支时,就会用到这个命令。,默认会尝试合并远程分支到当前分支。

TracyCoder的博客 7885

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

「汽车电子助手」的博客 1439

linux 性能优化

linux 性能优化

东城绝神 718

threadX的USBX的初始化和解初始化的分析。

tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行。主要就是创建了线程,也就是第3个参数app_ux_device_thread_entry,这个参数内是MX_USB_Device_Init,也就是USB底层初始化。进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”

qq_31885403的博客 647

Linux 性能优化

无论你是运维还是开发,可能都经历过这样的场景: 流量高峰期,服务器 CPU 使用率过高报警,你登录 Linux 上去 top 完之后,却不知道怎么进一步定位,到底是系统 CPU 资源太少,还是程序并发部分写得有问题? 系统并没有跑什么吃内存的程序,但在敲完 free 命令之后,却发现已经没什么内存了,到底是哪里占用了内存?为什么? 一大早就收到 Zabbix 告警,你发现某台存...

zc520yzy的博客 294

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

一、初识linux性能优化

想真正学懂一门知识,最好的方法就是问问题。当你能提出好的问题时,就说明你已经深入了解了它。

qingmu_kai的博客 723

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux性能优化全景指南

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。进程只有在调度到CPU上运行时才需要切换上下文,有以下几种场景:CPU时间片轮流分配,系统资源不足导致进程挂起,进程通过sleep函数主动挂起,高优先级进程抢占时间片,硬件中断时CPU上的进程被挂起转而执行内核中的中断服务。因此相比系统调用来说,在保存当前进程的内核状态和CPU寄存器之前,需要先把该进程的虚拟内存,栈保存下来。说明不是工具的问题。

weixin_39757802的博客 2056

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux性能优化大师.pdf资源介绍:全面掌握Linux性能优化技巧

Linux性能优化大师.pdf资源介绍:全面掌握Linux性能优化技巧 去发现同类优质开源项目:https://gitcode.com/ 在当前技术环境下,Linux系统的稳定性和性能优化对于IT基础设施至关重要。《Linux性能优化大师.pdf》资源为您提供了一站式的学习解决方案,帮助您深入了解并掌握Linux性能优化的各个方面。 项目介绍 《Linux性能优化大师.pdf》是一本专注于Linu...

gitblog_06717的博客 699
上一篇: linux内存地址
下一篇: HashMap
big muscle
博客等级 码龄11年 145粉丝 71原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值