Linux mpstat 查看多核 CPU 使用情况

2次阅读

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

Linux mpstat 查看多核 CPU 使用情况

mpstatsysstat 工具包中的命令,专用于报告每个 CPU 核心(包括逻辑核,如超线程)的实时使用率,比 tophtop 更精细、更适合脚本化分析。

确认安装并启用 sysstat

多数发行版默认不启动 sysstat 服务,需手动安装和启用:

  • ubuntu/debiansudo 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)来分散软中断
text=ZqhQzanResources