Linux怎么查看系统的Interrupts中断 Linux中断平衡优化详解

雨强小哥_8707

雨强小哥_8707

2026-05-03

772人浏览

原创

直接查看/proc/interrupts可获中断分布,但需结合设备类型、cpu亲和性、软中断及irqbalance状态综合判断是否失衡;关键在识别单cpu上异常飙升的特定irq(如eth0、nvme),并验证其软中断(/proc/softirqs)与业务线程是否同步均衡。

linux怎么查看系统的interrupts中断 linux中断平衡优化详解

直接看 /proc/interrupts 就能知道系统中断分布,但光看数字没用——得结合设备、CPU亲和性、软中断和 irqbalance 状态一起判断是否真存在失衡。

怎么快速定位高干扰中断源

中断失衡往往不是“所有中断都多”,而是某几个 IRQ 在单个 CPU 上疯狂增长,把那个核拖垮。关键不是总量,是分布斜率。

  • cat /proc/interrupts 输出里找最后一列含 eth0、nvme、msi 或 IO-APIC 的行,再盯紧某一个 CPU 列(比如 CPU1)数值是否远高于其他列
  • 用 watch -n 1 'cat /proc/interrupts | grep "eth0\|nvme"' 实时观察——如果某行某列每秒涨几百甚至上千,基本就是它在捣鬼
  • 注意 RES(重调度)、CAL(IPI)、TIMER 这类内核中断持续飙升,通常说明进程调度异常或有 busy-loop,不是硬件问题
  • ethtool -S eth0 | grep -E "(rx_packets|rx_interrupts)":若 rx_interrupts 远大于 rx_packets(比如 5:1),说明 NAPI 没生效,网卡在“包包中断”,得查 GRO/LRO 和 RSS 队列数

为什么改了 smp_affinity 还没用

手动写 /proc/irq/42/smp_affinity 后过几秒又变回去?八成是 irqbalance 在后台偷偷覆盖你。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • systemctl status irqbalance 必须先确认服务状态;只要你在做低延迟或绑核优化,sudo systemctl stop irqbalance && sudo systemctl disable irqbalance 是强制动作
  • smp_affinity 是十六进制掩码,0x01 = CPU0,0x03 = CPU0+CPU1,但现代系统更推荐用 smp_affinity_list(如 echo 0,2 > /proc/irq/42/smp_affinity_list),可读性高且避免位运算错误
  • 写入前确认该 IRQ 是否支持动态调整:ls -l /proc/irq/42/ 中要有 smp_affinity* 文件;某些固件锁定的中断(如某些 BMC 或老 RAID 卡)写入会报 Operation not permitted
  • NUMA 架构下,优先把网卡 IRQ 绑到与该网卡直连的 CPU 节点(用 lscpu 和 lspci -vv -s $(ethtool -i eth0 | grep bus-info | awk '{print $2}') | grep NUMA 交叉验证)

软中断(softirq)堆积比硬件中断更隐蔽

/proc/interrupts 只统计硬件 IRQ 触发次数,而 NET_RX、NET_TX、RCU 这些软中断在 /proc/softirqs 里,它们不占 IRQ 编号,但吃 CPU 更狠,且容易被误认为是“进程占用”。

  • cat /proc/softirqs 查看各 CPU 上 softirq 执行次数,重点关注 NET_RX 列——如果 CPU1 的值是其他核的 5 倍以上,且 mpstat -P ALL 1 显示该核 %soft 持续 >20%,说明下半部处理已成瓶颈
  • 软中断不绑定 CPU,但执行受当前运行核限制;它会在中断退出后立即在**触发它的那个 CPU** 上执行,所以 IRQ 绑定不均 → softirq 也必然不均
  • 不能只调 IRQ,还得配合网卡多队列:用 ethtool -l eth0 看最大通道数,再用 ethtool -L eth0 combined 4 开足队列,最后确保每个队列有独立 IRQ(cat /proc/interrupts | grep eth0 应看到多个不同 IRQ 号)
  • RSS(接收侧缩放)必须与网卡驱动、固件、交换机 flow control 全链路匹配;否则即使开了 8 个队列,流量仍全打到第一个 IRQ

真正难的不是改哪一行配置,而是确认改动后有没有形成闭环:IRQ 分散了 → 对应的 softirq 是否同步摊开 → 业务线程是否真的没再被同核中断打断 → L1/L2 缓存命中率有没有回升。这些必须用 perf stat -C 1 -e cycles,instructions,cache-references,cache-misses 对比验证,而不是只盯着 /proc/interrupts 数字变小就收工。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6179

3

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.29

3005

6

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

3868

10

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.29

2705

10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4030

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3453

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2633

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6390

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6042

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习