直接用 mpstat -p all 就能查看所有 cpu 核心的实时使用率,这是分析多核负载均衡最直接有效的方式;需先安装 sysstat 并启用服务,重点关注各核 %idle 差异以识别负载不均,结合定时采样和 pidstat 可精确定位瓶颈进程或中断。

直接用 mpstat -P ALL 就能查看所有 CPU 核心的实时使用率,这是分析多核负载均衡最直接有效的方式。关键不是看整体平均值,而是对比各核之间的差异——如果某些核心长期满载(%idle 接近 0),而其他核心空闲(%idle > 95%),就说明负载不均。
确认工具可用并启用数据收集
mpstat 不是系统默认自带命令,需先安装 sysstat 工具包:
- Ubuntu/Debian:sudo apt update && sudo apt install sysstat -y
- CentOS/RHEL/Fedora:sudo yum install sysstat 或 sudo dnf install sysstat
安装后建议启用 sysstat 服务,确保底层统计数据持续采集:
- sudo systemctl enable sysstat && sudo systemctl start sysstat
- 部分发行版(如较新 Ubuntu)可能默认已启用,可用 systemctl is-active sysstat 验证
快速识别负载不均衡现象
运行 mpstat -P ALL 查看当前快照。输出中每行代表一个 CPU(编号 0、1、2…),首行为 all(全核平均值):
- 重点关注 %idle 字段:若某核 %idle 持续低于 5%,而另一核高于 90%,即存在明显倾斜
- 观察 %usr 和 %sys 分布:单核高 %usr + 其他核低 %usr,常提示进程未并行化或绑核导致
- 留意 %iowait 是否集中于特定核:可能与中断亲和性配置不当有关(如网卡软中断只落在 CPU 0)
动态追踪变化趋势
静态快照容易遗漏瞬时峰值,用时间参数做连续采样更可靠:
- mpstat -P ALL 1 10:每秒采样一次,共 10 次,适合抓突发性单核打满场景
- mpstat -P ALL 5:每 5 秒输出一行,持续运行,适合后台观察长周期分布
- 采样期间若发现某核 %idle 突然归零且持续数秒,而 others 仍宽松,基本可定位为该核上某个进程或中断造成瓶颈
聚焦问题核心深入排查
一旦锁定高负载核心(比如 CPU 3),可单独监控它并联动查进程:
- mpstat -P 3 0.5:半秒刷新一次,确认是否稳定高占用
- 同步执行 pidstat -p ALL 0.5 | grep -A 10 "CPU.*3",筛选在 CPU 3 上密集运行的进程
- 结合 cat /proc/interrupts | head -20 查看中断是否集中在同一核,判断是否需调整 smp_affinity











