mpstat 是 sysstat 工具包中用于精确监控各 cpu 核心(含逻辑核)实时使用率的命令,支持间隔采样、脚本化分析及负载不均衡诊断。

mpstat 是 sysstat 工具包中的命令,专用于报告每个 CPU 核心(包括逻辑核,如超线程)的实时使用率,比 top 或 htop 更精细、更适合脚本化分析。
确认安装并启用 sysstat
多数发行版默认不启动 sysstat 服务,需手动安装和启用:
- Ubuntu/Debian:
sudo apt install sysstat,然后编辑/etc/default/sysstat,将ENABLED="false"改为"true",再运行sudo systemctl enable sysstat && sudo systemctl start sysstat - CentOS/RHEL:
sudo yum install sysstat(或dnf install sysstat),服务通常随包自动启用,可用sudo systemctl status sysstat确认
常用 mpstat 命令格式
核心用法是按间隔采样,观察各核动态变化:
- 查看所有 CPU 核心当前瞬时状态:
mpstat -P ALL 1 1(每秒刷新 1 次,共 1 次) - 持续监控 5 秒,每秒输出一行汇总+各核明细:
mpstat -P ALL 1 5 - 只看第 0 号核心(通常是第一个物理核的第一个逻辑核):
mpstat -P 0 2 - 排除 idle 列,聚焦活跃指标:
mpstat -P ALL 1 1 | grep -v "CPU.*idle"
读懂关键字段含义
输出中每列代表一类 CPU 时间占比(单位为百分比),重点关注:
- %usr:用户态程序占用 CPU 的时间(如你的应用、shell 命令)
- %sys:内核态占用时间(系统调用、中断处理等)
- %iowait:CPU 空闲但等待 I/O 完成的时间(高值可能表示磁盘或网络瓶颈)
- %idle:真正空闲时间;若某核长期接近 100%,说明该核未被有效利用
- %irq / %soft:硬件中断 / 软中断耗时,异常升高可能暗示驱动或设备问题
识别负载不均衡与热点核心
多核 CPU 使用不均是常见性能隐患。例如运行 mpstat -P ALL 1 1 后发现:
- CPU0:%usr=95%,%idle=2%;其余核:%usr90% → 应用可能是单线程或未绑定多核,考虑用
taskset绑定或改用并发模型 - 所有核 %iowait 都高于 30%,但磁盘 I/O 并不高 → 可能是大量短时阻塞型系统调用(如频繁 open/close 文件),用
strace追踪进程行为 - %soft 高且集中在某几个核 → 检查网卡是否开启 RPS(Receive Packet Steering)或启用 RFS(Receive Flow Steering)来分散软中断










