mpstat -p all 是监控多核 cpu 最准确的方式,可实时展开所有逻辑核心负载,每行对应一个核心(含超线程),字段明确,适用于排查单核过载、i/o 等待或调度不均问题。

直接用 mpstat -P ALL 就能展开所有逻辑 CPU 的实时负载,这是监控多核 CPU 最准确的方式。它不依赖交互、不简化聚合,每行对应一个核心(包括超线程),字段含义明确,适合排查单核过载、I/O 等待或调度不均问题。
先装好 sysstat 工具包
mpstat 不是系统默认命令,需安装所属的 sysstat 包:
- Ubuntu/Debian:sudo apt update && sudo apt install sysstat
- RHEL/CentOS 7:sudo yum install sysstat
- RHEL 8+/Rocky/AlmaLinux:sudo dnf install sysstat
- Arch Linux:sudo pacman -S sysstat
安装后运行 mpstat -V 验证是否可用。部分发行版还需启用数据采集服务:sudo systemctl enable --now sysstat(确保 sa1/sa2 定时任务运行)。
看每个核心的实时使用率
执行以下命令,每秒刷新一次,持续显示各核负载:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
mpstat -P ALL 1
- 首行标为 all,是所有核心的平均值,仅作参考
- 后续每行如 CPU 0、CPU 1… 对应具体逻辑核
- 重点关注 %usr + %sys:若长期 >90%,说明该核计算密集;若 %iowait 显著偏高(如 >20%),说明它正卡在磁盘或网络 I/O 上,和 CPU 性能无关
抓短时峰值或做脚本采集
加采样次数可避免日志刷屏,适合故障复现或自动化检查:
mpstat -P ALL 0.5 10
- 每 500 毫秒采一次,共 10 次(覆盖 5 秒窗口)
- 输出末尾带 Average: 行,给出各核在这 5 秒内的算术平均值
- 适合写入监控脚本:mpstat -P ALL 1 1 | awk '/^ [0-9]+$/ {print $1, $4, $6}' 提取 CPU 编号、%usr、%sys
识别关键字段和异常信号
输出中这些列最常用:
- %usr:普通用户进程占用时间
- %sys:内核态(系统调用、驱动等)占用时间
- %iowait:CPU 空闲但等待 I/O 完成的时间 —— 这不是 CPU 瓶颈,是存储或设备慢
- %idle:真正空闲时间;若某核 %idle 常低于 5%,而其他核很高,说明负载没均衡,可能有线程绑核或亲和性配置
- %steal:虚拟机里被宿主机“偷走”的时间,>5% 值得警惕










