Linux下CPU监控工具有哪些

70次阅读
没有评论

共计 8943 个字符,预计需要花费 23 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 Linux 下 CPU 监控工具有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

 01. 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 使用情况。

top -H -b -d 1 -n 200 top.txt,每个 1 秒统计一次,共 200 次,显示线程细节,并保存到 top.txt 中。

top 采样来源你还依赖于 /proc/stat 和 /proc//stat 两个,这两个的详细介绍参考:/proc/stat[1]和 /proc//stat[2]。

其中 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

02. perf

通过 sudo perf top -s comm,可以查看当前系统运行进程占比。

这里不像 top 一样区分 idle、system、user,这里的占比是各个进程在总运行时间里面占比。

通过 sudo perf record 记录采样信息,然后通过 sudo perf report -s comm。

03. sar 和 ksar

sar 是 System Activity Report 的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。

要使用 sar 需要安装 sudo apt install sysstat,然后对 sysstat 进行配置。

sar 用于记录统计信息,ksar[4]用于将记录的信息图形化输出。

ksar 下载地址在:https://github.com/vlsi/ksar/releases。

#  将  ENABLED=“false“  改为 ENABLED=“true“ $ sudo gedit /etc/default/sysstat #  修改 sar 的周期等配置  $ sudo gedit /etc/cron.d/sysstat #  重启 sar 服务  $ sudo /etc/init.d/sysstat restart # sar log 存放目录  $ ls -l /var/log/sysstat/

使用 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 文件。

得到如下的图表。

还可以通过 sar 记录一段时间的信息,指定采样周期和采样次数。

这些命令前加上 LC_ALL= C 之后保存到文件中,都可以在 ksar 中图形化显示。

sar 1 100----------------- 所有 cpu 合一的统计信息  sar -P ALL 1 100-------- 包括 cpu 合一以及单个 cpu 的统计信息  sar -B 1 100---------------paging 统计信息  sar -b 1 100--------------- 块设备 IO 统计信息  sar -d 1 100--------------- 块设备活动统计信息  sar -F 1 100---------------- 挂载的文件系统统计信息  sar -r ALL------------------  显示详细的内存使用统计信息  sar -S ------------------------ 显示 swap 空间使用情况统计信息  sar -w-----------------------  显示进程创建以及进程切换统计信息  sar -W----------------------- 显示 swap 换入换出统计信息。

更详细请参考

bull;《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks[5]》

bull;《Collect and report Linux System Activity Information with sar[6]》。

04. mpstat

mpstat 是 Multiprocessor Statistics。当没有参数时,mpstat 显示系统系统以来所有信息平均值。

常见用法如下,-P ALL 监控所有 CPU,细节显示特定 CPU;10 表示每 10 秒监控一次;20 表示监控 20 次。

$ mpstat -P ALL 10 20

结果如下:

usr 表示用户空间进程,nice 表示 nice 值大于 0 的用户空间进程。

sys 是内核空间,iowait 是 I / O 等待时间,irq 是硬中断,soft 是软中断,idle 是空闲时间,guest 和 gnice 都是虚拟机时间。

05. 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

06. 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 1 0 472576 228688 559092 1061756 0 0 9 39 1 0 8 4 87 0 0 1 0 472576 228184 559100 1061756 0 0 0 13 1532 3395 10 6 84 0 0 1 0 472576 229308 559100 1061616 0 0 0 0 1446 3449 10 5 85 0 0 0 0 472576 229592 559108 1061616 0 0 0 6 1419 3474 10 5 85 0 0 1 0 472576 229804 559108 1061616 0 0 0 0 1446 3439 10 5 85 0 0

上面的参数可以分为 6 大部分:进程、内存、swap、io、中断和进程切换、cpu。

更加详细的解释:

参考文档:《Linux Performance Measurements using vmstat[7]》

07. pidstat

pidstat 主要用于监控全部或指定进程占用系统资源的情况。

7.1 查看 CPU 使用情况

pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

#  显示所有的进程统计信息,包括 idle 进程。 pidstat -p ALL #  更加详细的显示了线程统计信息。 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 秒  0 1 0.02 0.00 185316 3028 0.08 systemd 15 时 18 分 21 秒  0 2 0.00 0.00 0 0 0.00 kthreadd 15 时 18 分 21 秒  0 4 0.00 0.00 0 0 0.00 kworker/0:0H 15 时 18 分 21 秒  0 6 0.00 0.00 0 0 0.00 mm_percpu_wq 15 时 18 分 21 秒  0 7 0.00 0.00 0 0 0.00 ksoftirqd/0 15 时 18 分 21 秒  0 8 0.00 0.00 0 0 0.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 秒  0 1 -1.00 -1.00 -1.00 243523129 systemd 15 时 20 分 40 秒  0 2 -1.00 -1.00 -1.00 0 kthreadd 15 时 20 分 40 秒  0 4 -1.00 -1.00 -1.00 0 kworker/0:0H 15 时 20 分 40 秒  0 6 -1.00 -1.00 -1.00 0 mm_percpu_wq 15 时 20 分 40 秒  0 7 -1.00 -1.00 -1.00 714512328679 ksoftirqd/0 15 时 20 分 40 秒  0 8 -1.00 -1.00 -1.00 417757303594 rcu_sched

kB_rd/s: 每秒进程从磁盘读取的数据量(以 kB 为单位)。

kB_wr/s: 每秒进程向磁盘写的数据量(以 kB 为单位)。

kB_ccwr/s:每秒进程被取消向磁盘写的数据量(以 kB 为单位)。

Command::拉起进程对应的命令。

08. time

time 命令可以被用于统计指定程序的 CPU 耗时。

比如 time cksum nomachine_6.0.80_1.exe 得到如下结果。

2401940638 32606752 nomachine_6.0.80_1.exe #  整个操作总耗时,00.263-0.094-0.011=0.158 是 IO 等待耗时。 real 0m0.263s #  用户态耗时  user 0m0.094s #  内核态耗时  sys 0m0.011s 2401940638 32606752 nomachine_6.0.80_1.exe #  第二次执行就可以看出等待 IO 操作的时间基本上没有了。 real 0m0.098s user 0m0.097s sys 0m0.000s

09. cpustat

通过 sudo apt install cpustat 安装,cpustat -T -D - x 结果如下。

#  显示 Load Avg 信息和平均频率等  Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online #  进程切换次数、硬中断、软中断等等统计信息。 # CPU 占用率、用户空间和内核空间占用率等。 3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0 new tasks/s, 1 running, 0 blocked %CPU %USR %SYS PID S CPU Time Task 25.74 25.74 0.00 11435 R 3 2.29w /usr/bin/python3 15.84 15.84 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg 10.89 9.90 0.99 2722 S 1 1.05w compiz 7.92 0.00 7.92 32352 S 2 16.60s [kworker/2:1] 0.99 0.00 0.99 32397 R 1 0.01s cpustat 0.99 0.99 0.00 11046 S 2 16.20h compiz 0.99 0.99 0.00 1317 S 0 8.76h /usr/NX/bin/nxnode.bin 0.99 0.00 0.99 10293 S 1 1.24m [kworker/1:2] 64.36 53.47 10.89 Total Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online 2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0 new tasks/s, 4 running, 0 blocked %CPU %USR %SYS PID S CPU Time Task 25.76 25.76 0.00 11435 R 3 2.29w /usr/bin/python3 18.18 18.18 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg 7.58 7.58 0.00 2722 S 1 1.05w compiz 6.06 0.00 6.06 32352 S 2 16.64s [kworker/2:1] 1.52 0.00 1.52 32397 R 1 0.02s cpustat 1.52 0.00 1.52 8 S 0 3.00h [rcu_sched] 1.52 0.00 1.52 18409 S 0 1.16m update-notifier 62.12 51.52 10.61 Total Distribution of CPU utilisation (per Task): % CPU Utilisation Count (%) 0.00 - 1.97 706 98.88 1.97 - 3.94 0 0.00 3.94 - 5.91 0 0.00 5.91 - 7.88 2 0.28 7.88 - 9.85 0 0.00 9.85 - 11.82 0 0.00 11.82 - 13.79 1 0.14 13.79 - 15.76 0 0.00 15.76 - 17.73 1 0.14 17.73 - 19.70 1 0.14 19.70 - 21.67 0 0.00 21.67 - 23.64 0 0.00 23.64 - 25.61 2 0.28 25.61 - 27.57 0 0.00 27.58 - 29.54 0 0.00 29.55 - 31.51 0 0.00 31.52 - 33.48 0 0.00 33.48 - 35.45 0 0.00 35.45 - 37.42 0 0.00 37.42 - 39.39 1 0.14 Distribution of CPU utilisation (per CPU):---------------------------------------------- 各 CPU 占用率,分用户空间和内核空间。 CPU# USR% SYS% 0 17.37 1.20 1 8.98 2.40 2 0.60 7.19 3 25.75 0.00

10. htop

htop 和 top 的功能类似,但是可读性比 top 更好。在界面按下 F5,可以看到进程里面的线程,树形结构表示了父子关系。

11. atop

atop 是一个监控系统资源和进程的工具。它通过 CPU 使用率来对列表中的进程进行降序排列,而每一个进程则包含了 CPU、内存、磁盘和网络状态等信息。它的功能与 top 和 htop 类似。

12. glances

glances 是一个由 python 编写的,与 Nmon 功能类似的报告工具,它能够报告统计 cpu、内存、网络、磁盘和进程。除了报告统计,glances 不支持任何其他特性或功能。当程序运行时点击“h”可以显示帮助页面。

13. nmon

Nmon 是一个非常容易使用,能够在一个屏幕上监视 CPU、内存、网络、磁盘使用状况和进程列表的工具。除了无法管理进程和修改报告显示,Nmon 与那些只用于报告的报告工具完全一样。另外,它可以将数据保存到电子表格文件。

14. PCP-gui

Performance Co-Pilot,简称 PCP,是一个系统性能和分析框架。它从多个主机整理数据并实时的分析,帮你识别不正常的表现模式。它也提供 API 让你设计自己的监控和报告解决方案。

安装 PCP 相关工具。

$ sudo apt install PCP PCP-gui

File- Open View 选择需要打开的视图,比如 CPU、Disk、Memory 等。

15. collectl 和 colplot

15.1 collectl 使用

collectl 是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。

不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu、disk、memory、network、sockets、tcp、inodes、infiniband、lustre、memory、nfs、processes、quadrics、slabs 和 buddyinfo 等。

同时 collectl 还可以替代常用工具,比如 top、vmstat、ps、iotop 等。

安装 collectl:

sudo apt-get install collectl

collectl 的使用很简单,默认 collectl 显示 cpu、磁盘、网络信息。

collectl 还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。

b  ndash; buddy info (内存碎片) c  ndash;  所有 CPU 的合一统计信息;C -  单个 CPU 的统计信息。 d  ndash;  整个文件系统 Disk 合一统计信息;C -  单个磁盘的统计信息。 f  ndash; NFS V3 Data i  ndash; Inode and File System j  ndash;  显示每个 CPU 的 Interrupts 触发情况;J -  显示每个中断详细触发情况。 l  ndash; Lustre m  ndash;  显示整个系统 Memory 使用情况;M -  按 node 显示内存使用情况。 n  ndash;  显示整个系统的 Networks 使用情况;N -  分网卡显示网络使用情况。 s  ndash; Sockets t  ndash; TCP x  ndash; Interconnect y  ndash;  对系统所有 Slabs (系统对象缓存)使用统计信息;Y -  每个 slab 使用的详细信息。

collectl –all 显示所有子系统的统计信息,包括 cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。

collectl –top 可以代替 top 命令:

collectl –vmstat 可以代替 vmstat 命令:

collectl -c1 -sZ -i:1 可以代替 ps 命令。

collectl 和一些处理分析数据工具 (比如 colmux、colgui、colplot) 结合能提供可视化图形。

15.2 colplot 使用

colplot 是 collectl 工具集的一部分,其将 collectl 收集的数据在浏览器中图形化展示。

colplot 的介绍 (http://collectl-utils.sourceforge.net/colplot.html),相关源码可以再 collectl-utils] 下载:https://sourceforge.net/projects/collectl-utils/files/

解压下载的 colplot 之后,sudo ./INSTALL 安装 colplot。

安装之后重启 apache 服务:

$suod systemctl reload apache2 $ sudo systemctl restart apache2

在浏览器中输入 http://127.0.0.1/colplot/,即可使用 colplot。

通过 Change Dir 选择存放经过 collectl - P 保存的数据,然后设置 Plot 细节、显示那些子系统、plot 大小等等。

最后 Generate Plot 查看结果。

以上是“Linux 下 CPU 监控工具有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计8943字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)