监控cpu硬件中断需用mpstat -i cpu,它显示各核每秒处理的硬件中断数(如timer、eth0),配合-p all和采样参数可定位中断不均衡;-i sum仅总和,-i scpu为软中断,-i all则合并统计。

要监控各 CPU 的硬件中断消耗,需使用 mpstat 的中断统计功能,核心是配合 -I 选项(而非默认的 CPU 利用率模式)。
启用硬件中断统计(-I CPU)
mpstat -I CPU 会显示每个 CPU 核心每秒接收的各类硬件中断数量(如时钟、网卡、磁盘控制器等),这是定位硬件中断不均衡或过高问题的关键命令。
- 运行
mpstat -I CPU 2 3:每 2 秒采样一次,共 3 次,输出中CPU列为处理器编号,后续各列为不同中断源的每秒触发次数(如timer、eth0、ahci等) - 若只关心当前瞬时快照,省略时间参数:
mpstat -I CPU(显示系统启动以来的平均值) - 搭配
-P ALL可确保所有核心都参与统计:mpstat -P ALL -I CPU 1
识别高中断负载的 CPU
输出中某列(如 eth0 或 msi)在某个 CPU 行数值显著高于其他核心,说明该中断被集中绑定到该核,可能引发单核瓶颈。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 常见现象:网卡收包中断集中在 CPU0,导致其
%irq偏高,而其他核空闲 - 验证方式:对比
mpstat -P ALL -I CPU 1和mpstat -P ALL 1中同一 CPU 的%irq值是否匹配
结合内核中断信息交叉验证
mpstat -I CPU 的数据源自 /proc/interrupts,可手动检查原始分布:
- 执行
cat /proc/interrupts | head -20查看前几行中断源及其在各 CPU 上的计数 - 重点关注字段对齐——第 2 列起对应 CPU0、CPU1……数值越大表示该核处理越多该类中断
- 若发现某设备中断全部落在单个 CPU,可通过
echo $cpu_mask > /proc/irq/$N/smp_affinity_list手动重分布(需 root 权限)
注意区分中断类型选项
-I 后参数不同,含义差异大,务必选对:
-
-I CPU→ 硬件中断(推荐用于排查网卡、磁盘等外设中断热点) -
-I SUM→ 仅显示每个 CPU 总中断数(无明细,适合快速概览) -
-I SCPU→ 软中断(如网络协议栈、tasklet),与硬件中断分开统计 -
-I ALL→ 同时输出硬件 + 软中断 + 总和,信息量大但易干扰重点










