直接运行 vmstat 1 实时观察 in 列(每秒硬件中断次数),正常空闲系统为100–500次/秒,持续超2000尤其规律性脉冲(如稳定8000+)属异常;需结合 r、b、cs 判断类型,并用 /proc/interrupts 定位具体中断源。

直接运行 vmstat 1 就能实时观察中断次数(in列),它是排查中断异常的第一步,无需安装、不依赖 root 权限,所有主流 Linux 发行版都自带。
盯住 in 列,确认是否真异常
in 表示每秒硬件中断总次数,单位固定为「次/秒」,不受 -S M 等内存单位参数影响。正常空闲系统通常在 100–500 之间;若持续高于 2000,尤其突破 5000 并伴随规律性脉冲(如每秒稳定在 8000+),就属于明显异常。
- 刚开机或服务启动瞬间 in 短时跳高(如 systemd 初始化、日志刷盘)属正常,重点看是否持续高位或周期性尖峰
- 对比基线:记录业务低峰期的 in 值(如凌晨 3 点),作为后续比对参照
- 避免用
vmstat 5这类长间隔——短时中断风暴(如网卡批量收包、定时器抖动)容易被平均掉而漏判
联动 r、b、cs 三列,判断中断类型和影响
单看 in 数字意义有限,必须结合其他字段看模式:
- in 和 cs 同步剧烈升高(例如两者都从 300 跳到 9000),大概率是中断风暴:常见于网卡软中断过载(如 SYN Flood、小包洪水)、NVMe 驱动异常、或 misconfigured 定时器(如 jiffies 溢出)
- r 明显大于 CPU 核数 + in 高 → 中断频繁抢占 CPU,导致就绪进程排队,表现为 CPU 看似忙但实际计算效率低
- b > 0 且 in 持续偏高 → 可能存在 I/O 设备异常(如坏盘反复重试、USB 设备干扰),引发大量不可中断睡眠与关联中断
定位具体中断源,用 /proc/interrupts 辅证
vmstat 只告诉你「中断总量高」,要查「谁在中断」,得看 /proc/interrupts:
- 执行
watch -n 1 'cat /proc/interrupts | head -20',重点关注各 CPU 列数值增长最快的行 - 网卡中断通常标记为
eth0、enp0s3或含msi/pci字样;定时器多为timer或IO-APIC-fasteoi下的某一行 - 如果某一行数值秒级增长上千,基本可锁定该设备或驱动为源头
结合场景做针对性验证
发现异常后,别急着调参,先做轻量验证:
- 临时关闭可疑网卡:
ip link set eth0 down,观察 in 是否骤降——若回落,说明网络流量或驱动问题 - 检查是否有新部署服务或内核模块:
dmesg -T | tail -30查近期报错,lsmod | grep -E "(nvme|igb|ixgbe)"看驱动版本 - 对比中断分布:
cat /proc/irq/*/smp_affinity_list 2>/dev/null | grep -v "No such",确认中断是否集中在单个 CPU 上(易引发瓶颈)


















