mpstat 命令超详细讲解
核心概念 mpstat 是多 CPU 核心性能统计工具,属于 sysstat 工具集,专门定位单核打满、软中断集中等问题。
1. 命令作用
mpstat = MultiProcessor Statistics,多CPU核心性能统计工具,属于 sysstat 工具集。
- 单独看整机
top只能看到整体CPU均值,看不出是哪一颗核心跑满; - mpstat 可以按每个CPU核心分别输出各项占用指标(用户态、内核、软中断、iowait、空闲等);
- 专门用来定位:单核打满、软中断集中单核心、多核心负载不均衡等问题。
2. 安装
# CentOS/RHEL
yum install sysstat -y
# Ubuntu/Debian
apt install sysstat -y
3. 基础语法
mpstat [选项] [间隔秒数] [输出次数]
示例:
mpstat -P ALL 1 # 每1秒输出所有CPU核心,持续输出
mpstat -P 0 2 3 # 只看cpu0,每2秒输出一次,共输出3次
4. 常用核心选项
| 参数 | 含义 |
-P ALL | 输出所有CPU核心 + 整机平均(最常用) |
-P N | 只查看指定编号CPU,如 -P 0 仅看第一颗核心 |
-A | 等价 -u -I ALL,输出CPU + 中断综合统计 |
-u | 默认,输出CPU使用率指标(us,sy,si,idle,iowait) |
-I ALL | 输出硬中断/软中断统计 |
5. 输出字段完整释义(mpstat -P ALL 1)
5.1. 示例输出片段
CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
all 12.34 0.00 5.67 1.20 0.01 8.90 0.00 0.00 0.00 71.88
0 25.10 0.00 10.20 2.10 0.02 22.50 0.00 0.00 0.00 40.08
1 2.10 0.00 1.00 0.30 0.00 0.50 0.00 0.00 0.00 96.10
逐字段解释:
- CPU
all= 所有核心平均值;数字0/1/2… 对应物理CPU核心编号。 - %usr
用户态CPU占比:业务程序、Java/Go/Python应用正常计算消耗。
us高:业务代码计算量大、死循环、频繁全表查询、大量并发业务。 - %nice
低优先级进程CPU占用,线上几乎都是0,可忽略。 - %sys
内核态CPU耗时:系统调用、iptables/eBPF、内存缺页、进程创建销毁、conntrack处理。
sys高:内核逻辑过载,不是业务代码问题。 - %iowait
CPU等待磁盘IO的空闲时间占比。
iowait高:磁盘性能瓶颈、大量随机读写、数据库刷脏页、ES段合并。 - %irq
硬中断CPU耗时(网卡/磁盘硬件触发的硬件中断),一般数值很低。 - %soft
重点:软中断si,对应你之前问的软中断
网卡收发包、定时器、块设备延迟处理都走软中断;
%soft单核心拉满,典型小包风暴、隧道封装、中断不均衡。 - %steal
虚拟机场景:宿主机超分,宿主机抢占CPU,虚拟机被迫等待。
物理机该值永远0;云服务器steal高代表宿主机资源争抢严重。 - %guest / %gnice
宿主机运行虚拟机的CPU开销,业务机器基本忽略。 - %idle
CPU空闲时间占比,越低代表核心越繁忙。
6. 高频实用命令场景
6.1. 线上排查标准命令(最常用)
每秒刷新,展示每一颗CPU详细指标,定位单核软中断打满:
mpstat -P ALL 1
6.2. 只观察CPU0核心,输出5次后自动停止
mpstat -P 0 2 5
6.3. 同时看CPU使用率 + 所有中断统计
mpstat -A 1
6.4. 只输出整机平均,不区分核心(类似top效果)
mpstat 1
7. 典型异常场景解读(结合生产故障)
7.1. 场景1:某一个CPU核心 %soft 达到90%+,其他核心idle很高
现象:
CPU0 ... %soft 92.00 %idle 3.00
CPU1 ... %soft 1.00 %idle 95.00
根因:网卡中断RSS未均衡,所有网络软中断全部压在CPU0;小包流量、VXLAN/IPIP隧道会加剧。
解决:配置网卡多队列中断亲和,分流到多核心。
7.2. 场景2:所有核心 %iowait 很高,usr很低
磁盘IO瓶颈,程序卡在等待读写磁盘,CPU没事干。
排查搭配 iostat -x 1 定位磁盘读写进程。
7.3. 场景3:所有核心 %usr 整体80%+,idle极低
业务应用计算密集:死循环、大量聚合查询、批量消费无限流。
搭配 perf top / jstack 定位耗CPU业务线程。
7.4. 场景4:所有核心 %sys 偏高
内核过载:上万条iptables策略、海量短连接conntrack、频繁创建销毁进程。
可切换eBPF CNI降低内核开销。
7.5. 场景5:虚拟机 %steal 持续20%以上
宿主机CPU超售,云主机性能受限,建议升级机型或换专用宿主机。
8. mpstat 和 top 的核心区别
top:只能看整机平均CPU,无法区分单个核心负载;看不到单独soft软中断占比;mpstat -P ALL:按核心拆分,精准定位单核瓶颈,单独输出%soft软中断指标;- 排查网络软中断、CPU负载不均衡故障,必须用mpstat,top做不到。
9. 配套联动排查工具
配合mpstat一起定位CPU问题:
- 进程占用:
top / htop / ps aux --sort=-pcpu - 软中断明细:
watch -n1 cat /proc/softirqs - 网卡流量包量:
sar -n DEV 1 - 磁盘IO:
iostat -x 1 - 函数级CPU热点:
perf top -g