首页/系统/Linux 内核与性能调优速查/mpstat 每核利用率与中断分布
CPU 与调度60 条

mpstat 每核利用率与中断分布

sysstat 的 mpstat -P ALL 展示每逻辑核的 usr/sys/iowait/soft/steal;-I 汇总中断统计,用于发现单核热点与中断集中。

什么是 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内核态占用系统调用、锁竞争密集
%iowaitCPU 等待 IO 的时间CPU 忙时等待不计入,会低估压力
%soft软中断处理单核偏高常见于网络中断集中
%steal被虚拟化层抢占持续偏高说明宿主资源争抢
判断不均衡要看 -P ALL 输出的最大值:整机 20% 利用率但某个核长期接近 100%,就属于典型的不均衡瓶颈。
%iowait 不是存储指标:CPU 一直忙于计算时,等待 IO 的时间不会计入 iowait,因此它偏低不代表没有存储压力。
中断分布可以直接读 /proc/interrupts 交叉核对:某几行的计数集中增长时,通常与 mpstat 里个别核 %soft 偏高相互印证,据此判断是否需要调整网卡队列或开启 RPS 分发。
sysstat 的定时采集能留下历史曲线:事后复盘优先查这些历史数据,只有当预期的时间段缺失时,才需要现场跑 mpstat 采样补充。

易错点

  • %iowait 不是存储指标:CPU 忙时等待不计入 iowait,会低估 IO 压力,判读要结合 await 与队列长度
  • 单核 %soft 偏高往往是网卡或块设备中断集中,结合 /proc/interrupts 定位,而不是盲目加 CPU
  • 只看全系统平均值会漏掉单核打满的瓶颈,排查必须用 -P ALL
  • 把 %steal 当成自身负载问题:它衡量的是被虚拟化层抢占,处置方向在宿主与超分策略上

数据来源与参考

  • sysstat 官方文档 mpstat(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌