本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/196
一、简介
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 子系统出现了某些问题。
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/196