Linux性能优化之CPU使用率

CPU利用率是CPU工作负载的度量,以百分比显示。
查看该指标的主要命令有up和ps。
上面显示了所有CPU的平均使用率输入数字1可以看到每个核心的使用率。
空行后显示进程的实时信息。
每个进程的%CPU一栏显示总的使用情况,包括用户模式和内核模式。
上面的命令不分。
在分析单个进程的使用情况时,pidstat工具是理想的选择。
使用pidstat命令以一秒的间隔查看进程的CPU使用情况。
输出包含多个数据点和平均值。
top、ps和pidstat工具可帮助查找CPU使用率高的进程。
但具体原因和代码需要具体分析。
perf工具非常适合此任务,它基于性能事件采样来分析系统事件、内核性能和应用程序性能。
使用perf分析CPU性能问题有两种方法:perftop和perfrecord&perfreport。
perftop实时显示CPU占用率最高的函数或命令,用于查找热点函数。
使用界面显示样本数量、事件类型和事件总数。
样本太少影响位置和百分比的参考值。
在perftop输出中,第一行包含样本数、事件类型和事件总数。
请注意样本数量太少,如果数量太少,排序和百分比就没有实际意义。
perftop输出从第二行开始,包含四列数据,代表不同的含义。
perfrecord用于存储数据,然后使用perfreport进行解析。
在实际使用中,通常会在perftop和perfrecord中添加-g参数来跟踪调用连接。
Linux内核源码分析学习资源:访问ke.qq.com/course/403254...【福利】加入Linux内核源码分析交流群:点击1095678385加入。
群里提供了许多个人推荐的优质学习资料,包括书籍和视频,供群成员独立查阅。
在这种情况下,代码执行过程中注入了无限循环,导致CPU利用率达到100%。
通过分析工具,找到导致CPU使用率增加的代码段。
案例代码生成的可执行文件名为main。
在Ubuntu系统中,执行主程序后,使用上述命令查看CPU使用情况。
CPU2利用率高达100%,主进程的CPU利用率也达到100%,说明系统CPU占用率的增加来自于主进程。
使用perf命令查找导致CPU使用率增加的特定功能。
通过调用关系的显示,发现问题出在注入死循环的函数功能上。
使用perf工具分析CPU使用率升高的原因支持丰富的命令使用“perfhelp”查看所有命令,使用“perfhelpCOMMAND”查看特定命令的使用情况。
在生产工作中,您可能会遇到整个系统CPU占用率高但单个进程CPU占用率低的情况。
分析此类问题时,可以使用pstree和execsnoop工具。
下面提供了安装pstree和execsnoop工具的步骤。
内容转载自https://mp.weixin.qq.com/s/EQdBqN3_sOHQafSUOe1k3g。

linux查看cpu占用率的方法:

toptop是使用最广泛的查看系统资源使用情况的工具,包括CPU、内存等资源。
这里主要关注的是CPU资源。
1.1/proc/loadavgloadaverage取自/proc/loadavg。
9.539.128.373/88928165前三个数字是1、5、15分钟内进程队列中的平均进程数,包括正在运行的进程+准备等待运行的进程。
第四个数字的分子代表正在运行的进程数,分母是进程总数。
最后一个数字是上次运行的进程ID号。
其中top取/proc/loadavg的前三位数字。
1.2top使用opentop来指定更新周期。
键入H打开隐藏线程;输入1,显示单核CPU使用率。
top-H-b-d1-n200>top.txt,每1秒计数一次,共200次,显示线程详细信息并保存在top.txt中。
最好的采样源,还要依赖/proc/stat和/proc//stat这两个的详细介绍请参见:/proc/stat和/proc//stat。
CPU信息对应的含义如下:us表示user,统计fine小于等于0的用户空间进程,即优先级为100~120。
ni表示nice,统计nice大于0的用户空间进程,即优先级为121~139。
sys表示系统,计算内核态运行时间,不包括中断。
id表示inactive,系统处于非活动状态。
wa表示iowait,统计io等待时间。
hi是硬件中断,统计硬件中断时间。
si是软件中断,统计软件中断时间。
最后一个m表示偷窃。
Perf使用sudoperftop-scomm查看当前系统中正在运行的进程的比例。
与top不同的是,inactive、system和user在这里都不是标志。
这里的份额是每个进程在总运行时间中所占的份额。
通过sudoperfrecord记录采样信息,然后通过sudoperfreport-scomm记录。
sar和ksarsar的意思是SystemActivityReport,可以用来实时观察当前系统活动并生成历史报告。
要使用sar,需要安装sudoaptinstallsysstat,然后配置sysstat。
sar用于记录统计信息,ksar用于将记录信息图形化输出。
Ksar下载网址为:github.com/vlsi/ksar/re...sudogedit/etc/default/sysstat--------------------------------------将ENABLED="false"更改为ENABLED="true"。
sudogedit/etc/cron.d/sysstat--------------------------------更改sar周期等配置。
sudo/etc/init.d/sysstatrestart------------------------------重启sar服务/var/log/sysstat/--------------------------------------------------------------sarlog存储目录使用sar将启动到当前的统计信息记录到文件sar.txt中。
LC_ALL=Csar-A>sar.txtPS:这里直接使用sar-A,但在ksar中无法正常显示。
如下运行java-jarksar.jar,然后Data->Loadfromtextfile...选择保存的sar.txt文件。
得到下图。
您还可以使用sar记录一段时间内的信息,并指定采样周期和采样次数。
在保存到文件之前添加LC_ALL=C后,这些命令可以在ksar中以图形方式显示。
colplotcollectl是一个优秀的实用程序,具有丰富的命令行功能。
您可以使用它来收集描述当前系统状态的性能数据。
与大多数其他系统监控工具不同,collectl不仅限于有限的系统指标。
相反,它可以收集许多不同类型的系统资源的信息,例如cpu、磁盘、内存、网络、套接字、tcp、inode、infiniband、lustre、内存、nfs、进程、quadrics、slabs和buddyinfo等。
同时collectl还可以替代常用的工具,如top、vmstat、ps、iotop等。
安装collectl:sudoapt-getinstallcollectl使用collectl非常简单。
默认情况下,collectl显示cpu、磁盘和网络信息。
Collectl还可以显示更多子系统信息。
如果该选项有对应的大写选项,则大写字母表示更详细的单位统计信息。
b-buddyinfo(内存碎片)c-所有CPU的统一统计;d–整个文件系统的统计信息C盘–单个磁盘的统计信息。
f–NFSV3Datai–InodeandFileSystemj–显示每个处理器的中断触发状态J–显示每个中断的详细触发状态。
l–Lustrem–显示整个系统的内存使用情况。
M-显示nodeUsage的内存。
n-显示整个系统的网络使用情况。
N——显示网卡的用途。
s-Socketst-TCPx-Interconnecty统计系统中所有磁盘(系统对象缓存)的使用情况Y-每个磁盘的使用情况的详细信息。
collectl--all显示所有子系统的统计信息,包括CPU、终端、内存、磁盘、网络、TCP、套接字、文件系统和NFS。
collectl--top可以替代top命令:collectl--vmstat可以替代vmstat命令:collectl-c1-sZ-i:1可以替代ps命令。
collectl可以结合一些工具(如colmux、colgui、colplot)提供可视化图形来处理和分析数据。
colplot是collectl工具包的一部分,它在浏览器中以图形方式显示collectl收集的数据。
colplot的介绍就到这里了,相关源码可以到collectl-utils下载。
解压下载的colplot后,sudo./INSTALL安装colplot。
安装完成后,重新启动apache服务:suodsystemctlreloadapache2sudosystemctlrestartapache2在浏览器中输入127.0.0.1/colplot/即可使用colplot。
使用ChangeDir选择并保存collectl-P保存的数据,然后设置绘图详细信息,显示哪些子系统、绘图大小等。
最后GeneratePlot看结果。

如何查看Linux内核下CPU的使用率

在Linux系统上,了解CPU使用情况对于优化性能和解决问题至关重要。
本文详细介绍了几种帮助您可视化和分析CPU使用情况的方法。
首先,使用top命令是实时监控系统状态的首选工具。
提供当前运行任务的动态统计摘要,包括完整的CPU和内存使用情况。
使用时,只需运行top命令即可查看系统整体状态信息,如正常运行时间、平均负载、进程数、当前CPU使用率等。
通过按Z键,您可以突出显示特定进程以更详细地查看它。
另一个强大的工具是htop。
它与top类似,提供更详细的系统资源使用情况摘要,支持垂直和水平滚动查看更多信息,并在命令行下方提供进程路径。
如果未安装,您可以通过sudoapt-getinstallhtop(对于Ubuntu/Debian)或sudoyuminstallhtop(对于CentOS/RHEL)命令进行安装。
使用ps命令,您可以确定哪些进程正在消耗CPU。
通过ps-C进程名-o%cpu可以快速查看特定进程的CPU使用情况。
nmon是一个交互式命令行工具,用于监视CPU、磁盘、NFS、内存和网络使用情况。
使用nmon,您可以通过按t键查看占用资源最多的进程。
安装命令是sudoyuminstallnmon。
运行atop命令时,您可以将输出记录到文件中以供以后查看。
该命令具有类似的功能。
如果尚未安装,只需运行sudoyuminstallatop即可。
使用atop-wfilename命令将输出记录到文件中,并通过atop-rfilename读取文件内容来查看CPU使用情况。
Glances是一个用Python编写的实用程序,用于显示有关系统资源的信息,包括CPU、内存、网络监控、进程、磁盘I/O和文件系统使用情况。
如果未找到该命令,请运行sudoyuminstallglances进行安装。
使用扫视实时监控系统状态或运行Web服务器来查看详细信息。
vmstat命令用于打印CPU活动、进程、块IO、磁盘和分页的详细信息。
要以2秒间隔监控系统资源,请连续运行5次,使用vmstat25。
sar命令用于收集和报告系统活动详细信息以显示CPU使用情况。
使用sar,您可以按特定时间间隔监控CPU使用情况。
例如sar310表示每3秒采集10个数据点。
总而言之,Linux系统提供了多种工具和命令来查看和分析CPU使用情况。
选择正确的工具取决于您的具体需求和系统环境。
除了这些命令之外,还有iostat和mpstat等命令也可以提供有关CPU使用情况的详细信息。