命令介绍
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 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
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
| 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
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
| 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 的中断信息
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
| 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
| 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 瓶颈