必须直接读取/proc/interrupts分析硬件中断,用grep筛选设备、watch动态监控跳变,结合/proc/softirqs区分软硬中断,并通过lspci和/proc/irq/irq号定位设备与亲和性配置。

如果您在麒麟操作系统中需要定位硬件设备引发的中断风暴、排查网卡或磁盘响应延迟、确认IRQ是否集中在单个CPU核心,就必须直接读取内核维护的中断统计原始数据,而不是依赖图形界面或间接指标。
查看硬件中断总数与设备分布
执行 cat /proc/interrupts 命令,该文件由内核实时生成,每行对应一个IRQ编号,列出了各CPU核心上该中断被触发的累计次数,最后一列标注了关联的设备或驱动名称(如 ahci、eth0、nvme)。
若输出过长难以定位,可用 grep -E "(eth|nvme|ahci|usb)" /proc/interrupts 精准筛选网卡、NVMe硬盘、SATA控制器和USB主控相关中断行。
【注意:/proc/interrupts 是只读虚拟文件,无需sudo权限即可读取,但内容不包含软中断】
动态监控中断变化趋势
中断计数随系统运行持续增长,静态快照无法反映突发压力。使用 watch -n 1 'cat /proc/interrupts | head -15' 每秒刷新前15行,观察某一行数值是否在无操作状态下仍剧烈跳变——这往往指向硬件异常或驱动缺陷。
如果某设备(例如 eth0)对应行的数值在1秒内增长超千次,且伴随网络卡顿,基本可判定为该网卡正在产生高频中断风暴。
本文档主要讲述的是Android 操作系统的介绍;Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
区分硬件中断与软件中断
硬件中断统计走 /proc/interrupts,而软中断(softirq)走另一条路径:cat /proc/softirqs。后者显示的是内核线程处理的延迟任务,如 NET_RX(网络接收)、BLOCK(块设备完成)、TIMER(定时器)等。
当 iowait 高但 /proc/interrupts 中磁盘相关IRQ增长缓慢,却见 /proc/softirqs 中 BLOCK 或 IRQ_POLL 列数值飙升,说明瓶颈不在硬件中断响应,而在内核软中断处理队列积压。
定位具体设备对应的IRQ编号
第一步:用 lspci -v 找到目标设备的BDF地址(如 00:1f.2),再执行 lspci -vv -s 00:1f.2 | grep IRQ 提取其分配的IRQ号。
第二步:将该IRQ号(例如42)代入 cat /proc/irq/42/device,确认绑定的实际设备节点;若返回为空,则说明该IRQ未被任何已注册设备占用,可能是BIOS预留或失效中断。
第三步:检查该IRQ当前亲和性设置:cat /proc/irq/42/smp_affinity。若值为 【00000001】,表示仅绑定到CPU0——这是多核系统下中断负载不均的典型配置,需后续手动重分配。










