一天一个 Linux 命令(41):mpstat 命令

一、简介

Linux下的mpstat(英文全称:Multiprocessor Statistics)命令是是实时系统监控工具,可以显示随着时间变化的CPU数据,方便找出CPU使用率与时间的关系。这个命令包含在工具集sysstat中,使用之前需要安装sysstat。

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

如果系统没有安装,可以通过sudo yum install sysstat来安装。

二、格式说明

mpstat [ options ] [ <interval> [ <count> ] ]
mpstat [参数]

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

三、选项说明

-A  等同于-u -I ALL -P ALL
-I  可以指定SUM CPU SCPU ALL四个参数,SUM表示每个处理器的中断总数,CPU表示每个核的每秒中断数量, SCPU表示每个核每秒的软中断数量,内核版本在2.6.31之后才支持。
-P  统计的CPU编号,一般用ALL
-u  输出列的信息
-V  查看工具版本号

delay  采样间隔
count  采样次数

四、命令功能

显示随着时间变化的CPU数据,方便找出CPU使用率与时间的关系

五、常见用法

5.1 执行监控第一个CPU

# mpstat -P 1

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:00:24 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:00:24 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41

CPU	    处理器ID
%user   在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice   在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys    在internal时间段里,内核时间(%)       (system/total)*100
%iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq    在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft   在internal时间段里,软中断时间(%)     (softirq/total)*100
%steal	显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比	steal/total*100
%guest	显示运行虚拟处理器时CPU花费时间的百分比	guest/total*100
%gnice  gnice/total*100
%idle   在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

CPU总的工作时间计算方式:
total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
user = user_cur – user_pre
total = total_cur - total_pre

5.2 执行监控全部CPU

# mpstat -P ALL

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:00:49 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:00:49 PM  all    0.28    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.40
03:00:49 PM    0    0.29    0.00    0.28    0.08    0.00    0.00    0.00    0.00    0.00   99.35
03:00:49 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41
03:00:49 PM    2    0.29    0.00    0.28    0.01    0.00    0.00    0.00    0.00    0.00   99.42
03:00:49 PM    3    0.27    0.00    0.27    0.01    0.00    0.00    0.00    0.00    0.00   99.44

5.3 每隔1个时间单位统计5次

# mpstat 1 5

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:01:26 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:01:27 PM  all    0.25    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.25
03:01:28 PM  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
03:01:29 PM  all    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00
03:01:30 PM  all    0.25    0.00    0.50    0.50    0.00    0.00    0.00    0.00    0.00   98.75
03:01:31 PM  all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.50
Average:     all    0.25    0.00    0.40    0.10    0.00    0.00    0.00    0.00    0.00   99.25

5.4 查看软中断统计信息

#每间隔1秒统计一次,总共统计2次
# mpstat -I SCPU 1 2

Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)

03:14:43 PM  CPU       HI/s    TIMER/s   NET_TX/s   NET_RX/s    BLOCK/s BLOCK_IOPOLL/s  TASKLET/s    SCHED/s  HRTIMER/s      RCU/s
03:14:44 PM    0       0.00      71.00       0.00      20.00       1.00       0.00       0.00      30.00       0.00      41.00
03:14:44 PM    1       0.00      64.00       0.00      12.00       0.00       0.00       0.00      13.00       0.00      42.00
03:14:44 PM    2       0.00      71.00       0.00       2.00       0.00       0.00       0.00      16.00       0.00      53.00
03:14:44 PM    3       0.00     115.00       0.00       0.00       0.00       0.00       0.00      25.00       0.00      66.00
03:14:45 PM    0       0.00      55.00       0.00       6.00       5.00       0.00       0.00      26.00       0.00      35.00
03:14:45 PM    1       0.00      14.00       0.00       2.00       0.00       0.00       0.00       3.00       0.00       9.00
03:14:45 PM    2       0.00      36.00       0.00       2.00       0.00       0.00       0.00      10.00       0.00      21.00
03:14:45 PM    3       0.00      81.00       0.00       0.00       0.00       0.00       0.00      18.00       0.00      45.00
Average:       0       0.00      63.00       0.00      13.00       3.00       0.00       0.00      28.00       0.00      38.00
Average:       1       0.00      39.00       0.00       7.00       0.00       0.00       0.00       8.00       0.00      25.50
Average:       2       0.00      53.50       0.00       2.00       0.00       0.00       0.00      13.00       0.00      37.00
Average:       3       0.00      98.00       0.00       0.00       0.00       0.00       0.00      21.50       0.00      55.50

六、拓展-vmstat和mpstat差别

1.vmstat和mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

2.vmstat中所有关于CPU的总结都适合mpstat。当 %idle 数字较低时,一般说明出现了 CPU 不足的问题。当 %iowait 数字较高时,一般当前负载下 I/O 子系统出现了某些问题。

 

原文地址:https://www.cnblogs.com/joshua317/p/15568690.html