linux下cpu实时性能监控mpstat命令详解

2,502 阅读3分钟

mpstat是Multiprocessor Statistics的缩写,是实时监控工具,报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CPU的平均状况的信息,而且能够有查看特定的cpu信息,mpstat最大的特点是:可以查看多核心的cpu中每个计算核心的统计数据;而且类似工具vmstat只能查看系统的整体cpu情况。

命令格式:

Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
[ -P { <cpu> [,...] | ON | ALL } ]

OPTIONS:

  • -A: 等同于-u -I ALL -P ALL

  • -I:可以指定SUM CPU SCPU ALL四个参数,SUM表示每个处理器的中断总数,CPU表示每个核的每秒中断数量, SCPU表示每个核每秒的软中断数量,内核版本在2.6.31之后才支持。

  • -P: 统计的CPU编号,一般用ALL

  • -u: 输出列的信息

  • -V: 查看工具版本号

查看所有cpu当前运行的状况,每两秒更新一次,一共更新5次

[root@localhost ~]# mpstat 2 5
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 	03/11/2020 	_x86_64_	(4 CPU)

03:59:44 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:59:46 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:59:48 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:59:50 AM  all    0.00    0.00    0.13    0.00    0.00    0.00    0.00    0.00    0.00   99.87
03:59:52 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:59:54 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:     all    0.00    0.00    0.03    0.00    0.00    0.00    0.00    0.00    0.00   99.97

每隔1秒输出所有cpu的使用情况

[root@localhost ~]# mpstat -P  ALL  1 1
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 	03/11/2020 	_x86_64_	(4 CPU)

03:51:28 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:51:29 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:51:29 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:51:29 AM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:51:29 AM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:51:29 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

Average:     CPU    %usr   %nice   %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

字段分析:

  • CPU: 每个CPU的process id

  • %usr: 用户态下,cpu的利用率

  • %nice: 具有nice优先级的用户下,CPU的使用率

  • %sys: 显示在kernel内核态执行时发生的CPU利用率百分比。这不包括维护硬件和软件中断所花费的时间。

  • %iowait: 显示系统有未完成的磁盘I/O请求时,CPU或CPU处于空闲状态的时间百分比

  • %irq: 系统服务于硬中断的时间开销的百分比

  • %soft: 系统服务于软中断开销的时间开销百分比

  • %steal: 显示虚拟CPU或CPU在虚拟机监控程序为另一个虚拟处理器提供服务时被迫等待所花费的时间百分比

  • %guest: CPU处理虚拟进程的花费的时间开销

  • %idel: CPU空闲百分比

查看所有cpu软中断统计信息

[root@localhost ~]# mpstat -I SCPU 1
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 	03/11/2020 	_x86_64_	(4 CPU)

04:18:21 AM  CPU       HI/s    TIMER/s   NET_TX/s   NET_RX/s    BLOCK/s BLOCK_IOPOLL/s  TASKLET/s  SCHED/s  HRTIMER/s    RCU/s
04:18:22 AM    0       0.00      30.69       0.99       0.00       0.99       0.00       0.00      24.75       0.00       7.92
04:18:22 AM    1       0.00       7.92       0.00       0.00       0.00       0.00       0.00       4.95       0.00       2.97
04:18:22 AM    2       0.00       5.94       0.00       0.99       0.00       0.00       0.00       5.94       0.00       0.99
04:18:22 AM    3       0.00       5.94       0.00       0.00       0.00       0.00       0.00       1.98       0.00       3.96
04:18:23 AM    0       0.00      29.00       0.00       0.00       0.00       0.00       0.00      23.00       0.00       7.00
04:18:23 AM    1       0.00       4.00       0.00       0.00       0.00       0.00       0.00       3.00       0.00       3.00
04:18:23 AM    2       0.00       5.00       0.00       3.00       0.00       0.00       0.00       5.00       0.00       1.00
04:18:23 AM    3       0.00       6.00       0.00       0.00       0.00       0.00       0.00       3.00       0.00       4.00
04:18:24 AM    0       0.00      19.00       0.00       0.00       1.00       0.00       0.00      16.00       0.00       3.00
04:18:24 AM    1       0.00       9.00       0.00       0.00       0.00       0.00       0.00       8.00       0.00       1.00
04:18:24 AM    2       0.00       6.00       0.00       2.00       0.00       0.00       0.00       6.00       0.00       2.00
04:18:24 AM    3       0.00       1.00       0.00       0.00       0.00       0.00       0.00       1.00       0.00       1.00