什么是 mpstat
mpstat 属于 sysstat 套件,按逻辑核输出利用率分解:%usr、%sys、%iowait、%soft(软中断)、%steal(被虚拟化层抢占)、%idle 等。默认输出全系统的平均,加 -P ALL 则逐个核展示。它的价值在于发现不均匀现象:单核打满而整体利用率不高、中断集中在一个核,这些在 top 的汇总数字里看不见。
基本信息
| 软件包 | sysstat |
|---|---|
| 每核视图 | mpstat -P ALL 1 5 |
| 中断统计 | mpstat -I SUM 1 5 |
| 指定核 | mpstat -P 3 1 5 |
| 关键列 | %iowait、%soft、%steal、%idle |
| 采样 | 必须带间隔与次数 |
典型使用场景
- 整体不忙但响应慢:找被单核打满的瓶颈
- 中断类问题:确认软中断是否集中在个别核
- 虚拟化性能评估:用 %steal 判断资源是否被宿主争抢
- IO 等待判读:区分 CPU 等待与真实的存储压力
- 压测与容量规划:收集每核利用率的基线数据
常用命令
常用命令
mpstat -P ALL 1 5 # 每核利用率,重点看最大值那一行
mpstat -I SUM -P ALL 1 3 # 每核中断统计
mpstat -P 3 1 5 # 只看 CPU3
mpstat 1 5 # 全系统平均(可能掩盖不均衡)
cat /proc/interrupts | head -20 # 中断计数,与 %soft 分布对照
awk '{print $1, $13, $14}' /proc/stat | head # 原始统计口径核对输出逐列读法
| 列 | 含义 | 异常信号 |
|---|---|---|
| %usr | 用户态占用 | 计算密集或应用热点 |
| %sys | 内核态占用 | 系统调用、锁竞争密集 |
| %iowait | CPU 等待 IO 的时间 | CPU 忙时等待不计入,会低估压力 |
| %soft | 软中断处理 | 单核偏高常见于网络中断集中 |
| %steal | 被虚拟化层抢占 | 持续偏高说明宿主资源争抢 |
判断不均衡要看 -P ALL 输出的最大值:整机 20% 利用率但某个核长期接近 100%,就属于典型的不均衡瓶颈。
%iowait 不是存储指标:CPU 一直忙于计算时,等待 IO 的时间不会计入 iowait,因此它偏低不代表没有存储压力。
中断分布可以直接读 /proc/interrupts 交叉核对:某几行的计数集中增长时,通常与 mpstat 里个别核 %soft 偏高相互印证,据此判断是否需要调整网卡队列或开启 RPS 分发。
sysstat 的定时采集能留下历史曲线:事后复盘优先查这些历史数据,只有当预期的时间段缺失时,才需要现场跑 mpstat 采样补充。