linux mpstat命令

mpstat命令 用于监控多核CPU的性能统计信息。它是sysstat工具包的一部分,可以显示每个CPU核心的使用情况,是性能分析和系统调优的重要工具。

命令格式

mpstat [选项] [时间间隔] [次数]

常用选项

选项 说明
-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的统计信息(默认)
mpstat
2. 每隔2秒显示一次,共显示5次
mpstat 2 5
3. 显示所有CPU核心的统计信息
mpstat -P ALL
4. 显示指定CPU核心的统计信息(如CPU0)
mpstat -P 0
5. 显示所有CPU核心的统计信息,每秒更新一次
mpstat -P ALL 1
6. 显示中断统计信息(所有CPU)
mpstat -I ALL
7. 显示每个CPU的中断统计信息
mpstat -I CPU
8. 显示软件中断统计信息
mpstat -I SCPU
9. 显示NUMA节点统计信息
mpstat -N
10. 以JSON格式输出
mpstat -o 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