Linux CPU占用率监控工具小结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux CPU占用率监控工具小结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7095字,纯文字阅读大概需要11分钟。
内容图文
关键词:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、xload、munin、htop、glances、atop。
1. top
top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。
这里主要关注CPU资源。
1.1 /proc/loadavg
load average取自/proc/loadavg。
9.53 9.12 8.37 3/889 28165
前三个数字是1、5、15分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。
第四个数字分子表示正在运行的进程数,分母是进程总数。
最后一个数字是最近运行的进程ID号。
其中top取的是/proc/loadavg的前三个数。
1.2 top使用
打开top,可以指定更新的周期。
输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。
其中CPU信息对应的含义如下:
us是user的意思,统计nice小于等于0的用户空间进程,也即优先级为100~120。
ni是nice的意思,统计nice大于0的用户空间进程,也即优先级为121~139。
sys是system的意思,统计内核态运行时间,不包括中断。
id是idle的意思,几系统处于空闲态。
wa是iowait的意思,统计io等待时间。
hi是hardware interrupt,统计硬件中断时间。
si是software interrupt,统计软中断时间。
最后的st是steal的意思。
2. perf
《系统级性能分析工具perf的介绍与使用》有关于perf使用的详细介绍,这里重点关注CPU占用率。
通过sudo perf top -s comm,可以查看当前系统运行进程占比。
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
3. sar、ksar
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。
sar用于记录统计信息,ksar用于将记录的信息图形化输出。
sudo gedit /etc/default/sysstat--------------------------------将 ENABLED=“false“ 改为ENABLED=“true“。
sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。
sudo /etc/init.d/sysstat restart--------------------------------重启sar服务
/var/log/sysstat/--------------------------------------------------sar log存放目录
使用sar记录统计信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:这里直接使用sar -A,在ksar中无法正常显示。
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。
得到如下的图表。
更详细请参考《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks》、《Collect and report Linux System Activity Information with sar》。
4. mpstat
mpstat是Multiprocessor Statistics。当没有参数时,mpstat显示系统系统以来所有信息平均值。
常见用法如下,-P ALL监控所有CPU,细节显示特定CPU;10表示每10秒监控一次;20表示监控20次。
mpstat -P ALL 10 20
结果如下:
Linux 4.13.0-36-generic (xxx) 2018年08月13日 _x86_64_ (4 CPU) 11时01分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11时01分19秒 all 3.446.265.150.130.000.200.000.000.0084.82 11时01分19秒 03.0913.463.290.000.000.100.000.000.0080.06 11时01分19秒 14.413.115.020.000.000.600.000.000.0086.86 11时01分19秒 22.960.209.290.000.000.100.000.000.0087.45 11时01分19秒 33.327.953.120.500.000.000.000.000.0085.11 11时01分19秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11时01分29秒 all 3.656.095.080.000.000.250.000.000.0084.93 11时01分29秒 03.9211.074.630.000.000.200.000.000.0080.18 11时01分29秒 14.391.903.490.000.000.800.000.000.0089.42 11时01分29秒 23.350.1010.140.000.000.000.000.000.0086.41 11时01分29秒 32.9111.262.210.000.000.000.000.000.0083.62
usr表示用户空间进程,nice表示nice值大于0的用户空间进程。
sys是内核空间,iowait是I/O等待时间,irq是硬中断,soft是软中断,idle是空闲时间,guest和gnice都是虚拟机时间。
5. uptime
uptime是一个简单获取系统总共运行多长时间,以及最近1分钟、5分钟、15分钟的平均负载。
uptime通过/proc/uptime和/proc/loadavg获取相关信息。
up前是当前系统时间,up后是系统运行时长。
load average后是1分钟、5分钟、15分钟平均负载。
11:15:41 up 82 days, 20:34, 8 users, load average: 0.28, 0.40, 0.43
6. vmstat
vmstat主要用于监控系统内存使用情况的工具,但是也包含一些CPU相关信息。
使用方法vmstat 5 5表示运行5次,每次5秒。结果如下:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 104725762286885590921061756009391084870010472576228184559100106175600013153233951068400104725762293085591001061616000014463449105850000472576229592559108106161600061419347410585001047257622980455910810616160000144634391058500
上面的参数可以分为6大部分:进程、内存、swap、io、中断和进程切换、cpu。
更加详细的解释:
7. pidstat
pidstat主要用于监控全部或指定进程占用系统资源的情况。
7.1 查看CPU使用情况
pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
pidstat -p ALL---------------------------显示所有的进程统计信息,包括idle进程。
pidstat -p ALL -t------------------------更加详细的显示了线程统计信息。
pidstat [option] interval [count]-----周期采样和采样次数
除此之外还可以通过-p获取指定进程的统计信息。
pidstat还可以通过-r获取内存使用统计信息,通过-d获取IO使用统计信息。
7.2 查看内存使用情况
pidstat -p ALL -r结果如下:
15时18分21秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command 15时18分21秒 010.020.0018531630280.08 systemd 15时18分21秒 020.000.00000.00 kthreadd 15时18分21秒 040.000.00000.00 kworker/0:0H 15时18分21秒 060.000.00000.00 mm_percpu_wq 15时18分21秒 070.000.00000.00 ksoftirqd/0 15时18分21秒 080.000.00000.00 rcu_sched
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数。
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生。
VSZ: 该进程使用的虚拟内存(以kB为单位)。
RSS: 该进程使用的物理内存(以kB为单位)。
%MEM: 该进程使用内存的百分比。
Command: 拉起进程对应的命令。
7.3 查看磁盘使用情况
pidstat -p ALL -d结果如下:
15时20分40秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 15时20分40秒 01 -1.00 -1.00 -1.00243523129 systemd 15时20分40秒 02 -1.00 -1.00 -1.000 kthreadd 15时20分40秒 04 -1.00 -1.00 -1.000 kworker/0:0H 15时20分40秒 06 -1.00 -1.00 -1.000 mm_percpu_wq 15时20分40秒 07 -1.00 -1.00 -1.00714512328679 ksoftirqd/0 15时20分40秒 08 -1.00 -1.00 -1.00417757303594 rcu_sched
kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)。
kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)。
kB_ccwr/s:每秒进程被取消向磁盘写的数据量(以kB为单位)。
Command: 拉起进程对应的命令。
8. time
time命令可以被用于统计指定程序的CPU耗时。
比如time cksum nomachine_6.0.80_1.exe得到如下结果。
2401940638 32606752 nomachine_6.0.80_1.exe real 0m0.263s-----------------整个操作总耗时,0.263-0.094-0.011=0.158是IO等待耗时。 user 0m0.094s-----------------用户态耗时 sys 0m0.011s------------------内核态耗时 240194063832606752 nomachine_6.0.80_1.exe real 0m0.098s-----------------第二次执行就可以看出等待IO操作的时间基本上没有了。 user 0m0.097s sys 0m0.000s
9. cpustat
通过sudo apt install cpustat安装,cpustat -T -D -x结果如下。
Load Avg 0.660.540.49, Freq Avg. 1.46 GHz, 4 CPUs online------------------------------显示Load Avg信息和平均频率等。 3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0new tasks/s, 1 running, 0 blocked----进程切换次数、硬中断、软中断等等统计信息。 %CPU %USR %SYS PID S CPU Time Task-------------------------------------------CPU占用率、用户空间和内核空间占用率等。 25.7425.740.0011435 R 32.29w /usr/bin/python3 15.8415.840.009445 S 01.49w /usr/lib/xorg/Xorg 10.899.900.992722 S 11.05w compiz 7.920.007.9232352 S 216.60s [kworker/2:1] 0.990.000.9932397 R 10.01s cpustat 0.990.990.0011046 S 216.20h compiz 0.990.990.001317 S 08.76h /usr/NX/bin/nxnode.bin 0.990.000.9910293 S 11.24m [kworker/1:2] 64.3653.4710.89 Total Load Avg 0.660.540.49, Freq Avg. 1.75 GHz, 4 CPUs online 2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0new tasks/s, 4 running, 0 blocked %CPU %USR %SYS PID S CPU Time Task 25.7625.760.0011435 R 32.29w /usr/bin/python3 18.1818.180.009445 S 01.49w /usr/lib/xorg/Xorg 7.587.580.002722 S 11.05w compiz 6.060.006.0632352 S 216.64s [kworker/2:1] 1.520.001.5232397 R 10.02s cpustat 1.520.001.528 S 03.00h [rcu_sched] 1.520.001.5218409 S 01.16m update-notifier 62.1251.5210.61 Total Distribution of CPU utilisation (per Task): % CPU Utilisation Count (%) 0.00 - 1.9770698.881.97 - 3.9400.003.94 - 5.9100.005.91 - 7.8820.287.88 - 9.8500.009.85 - 11.8200.0011.82 - 13.7910.1413.79 - 15.7600.0015.76 - 17.7310.1417.73 - 19.7010.1419.70 - 21.6700.0021.67 - 23.6400.0023.64 - 25.6120.2825.61 - 27.5700.0027.58 - 29.5400.0029.55 - 31.5100.0031.52 - 33.4800.0033.48 - 35.4500.0035.45 - 37.4200.0037.42 - 39.3910.14 Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用户空间和内核空间。 CPU# USR% SYS% 017.371.2018.982.4020.607.19325.750.00
xload
4. 其他
munin、htop、glances、atop、
原文:https://www.cnblogs.com/arnoldlu/p/9462221.html
内容总结
以上是互联网集市为您收集整理的Linux CPU占用率监控工具小结全部内容,希望文章能够帮你解决Linux CPU占用率监控工具小结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。