linux mpstat命令
mpstat命令 用于监控多核CPU的性能统计信息。它是sysstat工具包的一部分,可以显示每个CPU核心的使用情况,是性能分析和系统调优的重要工具。
命令格式
常用选项
| 选项 |
说明 |
-P {ALL|CPU编号} |
指定要监控的CPU(ALL表示所有CPU) |
-u |
显示CPU使用率统计(默认选项) |
-I {SUM|CPU|SCPU|ALL} |
显示中断统计信息 |
-V |
显示版本信息 |
-h |
人性化显示(易读格式) |
-o JSON |
以JSON格式输出 |
-N |
显示节点统计信息(NUMA架构) |
输出字段说明
| 字段 |
说明 |
| CPU |
CPU编号(all表示所有CPU的平均值) |
| %usr |
用户态CPU使用率 |
| %nice |
低优先级用户态CPU使用率 |
| %sys |
内核态CPU使用率 |
| %iowait |
CPU等待I/O操作的时间百分比 |
| %irq |
处理硬件中断的时间百分比 |
| %soft |
处理软件中断的时间百分比 |
| %steal |
虚拟CPU被hypervisor占用的时间百分比 |
| %guest |
运行虚拟处理器的时间百分比 |
| %gnice |
运行低优先级虚拟处理器的时间百分比 |
| %idle |
CPU空闲时间百分比 |
使用实例
1. 显示所有CPU的统计信息(默认)
2. 每隔2秒显示一次,共显示5次
3. 显示所有CPU核心的统计信息
4. 显示指定CPU核心的统计信息(如CPU0)
5. 显示所有CPU核心的统计信息,每秒更新一次
6. 显示中断统计信息(所有CPU)
7. 显示每个CPU的中断统计信息
8. 显示软件中断统计信息
9. 显示NUMA节点统计信息
10. 以JSON格式输出
实际输出示例
示例1:显示所有CPU核心的统计信息
# mpstat -P ALL 1 2
Linux 5.4.0-42-generic (server) 08/15/2023 _x86_64_ (4 CPU)
10:30:00 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:30:01 AM all 5.25 0.00 1.75 0.25 0.00 0.25 0.00 0.00 0.00 92.50
10:30:01 AM 0 6.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 92.00
10:30:01 AM 1 4.00 0.00 1.00 1.00 0.00 1.00 0.00 0.00 0.00 93.00
10:30:01 AM 2 6.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 92.00
10:30:01 AM 3 5.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 93.00
示例2:显示中断统计信息
# mpstat -I SUM 1 3
Linux 5.4.0-42-generic (server) 08/15/2023 _x86_64_ (4 CPU)
10:35:00 AM CPU intr/s
10:35:01 AM all 1024.00
10:35:02 AM all 1102.50
10:35:03 AM all 980.75
CPU性能分析要点
性能指标解读
- %usr过高:应用程序可能占用过多CPU资源
- %sys过高:系统内核占用过多CPU,可能系统调用频繁
- %iowait过高:CPU等待I/O,可能存在磁盘瓶颈
- %idle过低:CPU资源紧张,可能需要优化或扩容
- CPU负载不均衡:某些核心过忙,某些过闲
注意:
- mpstat第一次报告显示的是系统启动以来的统计信息,后续报告显示的是间隔时间内的统计信息
- 使用
-P ALL可以查看每个CPU核心的详细情况
- 在多核系统中,查看每个核心的使用情况比只看整体平均更有意义
- %iowait高不一定表示磁盘有问题,需要结合iostat等工具综合分析
与相关命令对比
| 命令 |
主要用途 |
区别 |
mpstat |
监控多核CPU的详细统计 |
显示每个CPU核心的详细使用情况 |
vmstat |
监控系统整体性能 |
显示内存、进程、CPU等整体情况 |
iostat |
监控磁盘I/O性能 |
重点显示磁盘读写统计 |
top |
实时监控进程和系统 |
交互式界面,显示进程级别的CPU使用 |
安装mpstat
如果系统没有安装mpstat,可以使用以下命令安装:
# Ubuntu/Debian
sudo apt-get install sysstat
# CentOS/RHEL/Fedora
sudo yum install sysstat
# 启动服务
sudo systemctl start sysstat
sudo systemctl enable sysstat
# 验证安装
mpstat -V