• 命令 mpstatsariostat 同属 sysstat 软件包下的子命令;
  • 在实际工作中,很少用该命令去查看系统性能和负载,基本上可以使用 sar 命令搞定;
  • 关于命令 sar 的用法可以参考:Linux 命令之 - sar
  • 关于命令 iostat 的用法可以参考:Linux 命令之 - iostat

命令介绍

pmstat命令是sysstat工具包中的一个命令。也是Linux 系统中的一个性能监视工具,它用于监视系统的 CPU 使用情况。它提供了对每个 CPU 的利用率、上下文切换、中断、软中断等信息的实时监控。mpstat 可以帮助系统管理员了解系统的负载情况,优化系统性能,以及发现潜在的性能瓶颈。

命令格式

mpstat 命令

mpstat 命令用于报告每个可用 CPU 的活动情况。

1
mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]

参数说明

参数 描述 备注
-A 显示所有的 CPU 相关信息 -
-n 显示设备名称 -
-T 显示线程相关信息 -
-u 显示 CPU 使用率 -
-V 显示版本信息 -
-I {SUM|CPU|SCPU|ALL} 显示中断信息 -
-N {<节点列表>|ALL} 显示指定 NUMA 节点的信息 -
–dec={0|1|2} 设置十进制数字的显示格式 -
-o JSON 输出格式为 JSON -
-P {<CPU_列表>|ALL} 显示指定 CPU 的信息 -

命令实例

基本用法

1.显示所有 CPU 的平均使用率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 不加参数之显示一次
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat # 相当于 mpstat -u
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:38:02 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:38:02 AM all 13.27 0.00 7.02 0.05 0.00 0.04 0.00 0.08 0.00 79.55

# 每一秒一次,持续2次
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:38:11 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:38:12 AM all 2.51 0.00 1.00 0.00 0.00 0.03 0.00 0.00 0.00 96.45
10:38:13 AM all 4.28 0.00 0.97 0.00 0.00 0.00 0.00 0.00 0.00 94.75
平均时间: all 3.39 0.00 0.99 0.00 0.00 0.02 0.00 0.00 0.00 95.60

2.显示指定 CPU 的使用率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 显示 CPU 0 和 CPU 1 的使用率
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat -P 0,1
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:39:51 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:39:51 AM 0 4.37 0.00 1.62 0.07 0.00 0.01 0.00 0.03 0.00 93.90
10:39:51 AM 1 9.51 0.00 5.45 0.03 0.00 0.01 0.00 0.06 0.00 84.94


#显示 CPU 0 和 CPU 1 的每隔 1 秒统计一次,持续 2 次的使用率
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat -P 0,1 1 2
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:40:36 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:40:37 AM 0 10.20 0.00 2.04 0.00 0.00 0.00 0.00 0.00 0.00 87.76
10:40:37 AM 1 2.06 0.00 1.03 0.00 0.00 0.00 0.00 0.00 0.00 96.91

10:40:37 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:40:38 AM 0 7.92 0.00 1.98 0.00 0.00 0.00 0.00 0.00 0.00 90.10
10:40:38 AM 1 0.00 0.00 2.02 0.00 0.00 0.00 0.00 0.00 0.00 97.98

平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: 0 9.05 0.00 2.01 0.00 0.00 0.00 0.00 0.00 0.00 88.94
平均时间: 1 1.02 0.00 1.53 0.00 0.00 0.00 0.00 0.00 0.00 97.45

3.显示 CPU 使用率的百分比

1
2
3
4
5
6
7
8
9
10
11
# 显示所有 CPU 的每隔 2 秒统计一次,持续 5 次的使用率百分比
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat -u 2 5
Linux 6.5.0-25-generic (leazhi-ubuntu2310) 03/13/2024 _x86_64_ (32 CPU)

10:41:01 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:41:03 AM all 3.56 0.00 1.02 0.03 0.00 0.02 0.00 0.00 0.00 95.37
10:41:05 AM all 3.31 0.00 1.05 0.00 0.00 0.00 0.00 0.00 0.00 95.64
10:41:07 AM all 3.93 0.00 5.38 0.03 0.00 0.00 0.00 0.02 0.00 90.64
10:41:09 AM all 3.29 0.00 0.78 0.02 0.00 0.00 0.00 0.13 0.00 95.76
10:41:11 AM all 2.79 0.00 0.99 0.00 0.00 0.00 0.00 0.03 0.00 96.17
平均时间: all 3.38 0.00 1.85 0.02 0.00 0.00 0.00 0.03 0.00 94.72

4.显示所有 CPU 的中断信息

1
mpstat -I ALL

5.输出 JSON 格式的 CPU 使用率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
leazhi@leazhi-ubuntu2310:~/Templates$ mpstat -u -o JSON
{"sysstat": {
"hosts": [
{
"nodename": "leazhi-ubuntu2310",
"sysname": "Linux",
"release": "6.5.0-25-generic",
"machine": "x86_64",
"number-of-cpus": 32,
"date": "03/13/2024",
"statistics": [
{
"timestamp": "11:01:32 AM",
"cpu-load": [
{"cpu": "all", "usr": 12.50, "nice": 0.00, "sys": 6.56, "iowait": 0.05, "irq": 0.00, "soft": 0.04, "steal": 0.00, "guest": 0.07, "gnice": 0.00, "idle": 80.78}
]
}
]
}
]
}}

扩展用法

1.结合 grep 命令过滤结果

1
2
3
4
5
6
7
8
# 显示所有 CPU 使用率超过 50% 的统计信息
mpstat 1 10 | grep -E "CPU.+%usr.+50.0"

# 输出
...
CPU %usr %sys %idle %wio %irq %soft
all 60.0 15.0 20.0 0.0 0.0 5.0
...

2.使用 mpstat 命令监控 CPU 负载

1
2
3
4
5
6
7
8
9
# 每隔 2 秒监控一次 CPU 负载,持续 10 分钟
while true; do mpstat 2 1; sleep 2; done | grep -E "CPU.+%usr.+%sys"

# 输出
...
CPU %usr %sys %idle %wio %irq %soft
all 20.0 15.0 60.0 0.0 0.0 5.0
all 25.0 10.0 65.0 0.0 0.0 5.0
...

高级用法

1.用 mpstat 命令分析 CPU 瓶颈