进程管理中怎么在Linux内核高负载时通过监控/proc/interrupts排查是否有恶意进程引发了硬中断雪崩

舞夢輝影

舞夢輝影

2026-07-25

812人浏览

原创

/proc/interrupts是定位硬中断雪崩的首要窗口,需关注秒级跳变、单cpu集中、非常规设备名三类异常信号,并结合pci/msi筛选、设备统计及亲和性验证排除假阳性,再通过pci路径、驱动模块和虚拟化上下文溯源根本原因。

进程管理中怎么在linux内核高负载时通过监控/proc/interrupts排查是否有恶意进程引发了硬中断雪崩

Linux内核高负载时,硬中断雪崩(IRQ storm)往往不是由“恶意进程”直接引发的——进程本身无法伪造或触发真实硬件中断。但异常进程可能间接诱发中断行为失控,比如驱动缺陷、设备误配置、固件bug被特定IO模式触发,或虚拟化环境中恶意客户机滥用直通设备。真正要查的,是中断计数是否出现**非预期、不可解释的持续性激增**,而/proc/interrupts正是第一道也是最可靠的观测窗口。

看懂/proc/interrupts里的“异常增长”信号

执行:
cat /proc/interrupts
重点关注三类特征:

  • 某一行数值秒级跳变且不收敛:例如某PCI-MSI行在watch -n1下从124567 → 128901 → 133205 → 137688,差值稳定在~4300+/s,远超正常网卡或磁盘流量应有节奏
  • 大量中断集中在单个CPU列:如CPU0列数值暴涨,其余CPU列几乎为0,说明亲和性未分散,也可能是某设备只注册了一个中断号(如未启用多队列)
  • 出现非常规设备名或空描述:如末尾列为"err:0""spurious""???",或显示为"iTCO_wdt"(看门狗)却无对应服务运行

快速筛出可疑中断源

不要人工扫屏。用组合命令定位目标:

PyCharm 2026.2.0.1 Linux版
PyCharm 2026.2.0.1 Linux版

PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。

下载
  • 只看PCI/MSI类中断(多数性能关键设备):
    grep -E 'PCI-MSI|IR-PCI-MSI' /proc/interrupts
  • 按设备名统计高频中断:
    awk '{print $(NF)}' /proc/interrupts | sort | uniq -c | sort -nr | head -10
    "nvme0n1""eth0"排前三但业务无对应流量,需深挖
  • 查某设备绑定的IRQ号:
    grep eth0 /proc/interrupts | awk '{print $1}'
    再用该数字检查其亲和性:
    cat /proc/irq/$(grep eth0 /proc/interrupts | awk '{print $1}')/smp_affinity_list

排除“假阳性”:确认是否真为硬中断问题

数值涨≠问题存在。常见干扰项:

  • 网卡启用NAPI或轮询模式:ethtool -c显示rx-usecs或rx-frames非零,或ethtool -i eth0中driver为"virtio_net"且force_multi_queue=0,此时中断计数可能极低甚至为0,但CPU软中断(%soft)仍高
  • i915显卡中断暴涨:未必是攻击,可能是DRM做页面翻转、DPMS电源切换;需结合trace-cmd record -e drm:drm_vblank_event -e irq:irq_handler_entry -T 5看handler耗时
  • 虚拟机中大量IR-IO-APIC:这是KVM正常中断注入机制,不是雪崩;关注guest内是否也有同步激增

关联验证:从中断反推进程与设备

中断本身不指向进程,但可顺藤摸瓜:

  • 查IRQ对应的PCI设备路径:
    grep -oE '0000:[0-9a-f]{2}:[0-9a-f]{2}\.[0-9a-f]' /proc/interrupts | head -1 | xargs -I{} ls -l /sys/bus/pci/devices/{}/device
  • 查该设备当前驱动模块:
    lspci -ks $(grep -oE '0000:[0-9a-f]{2}:[0-9a-f]{2}\.[0-9a-f]' /proc/interrupts | head -1)
  • 检查模块是否被异常加载或参数篡改:
    lsmod | grep $(modinfo $(lspci -ks $(grep -oE '0000:[0-9a-f]{2}:[0-9a-f]{2}\.[0-9a-f]' /proc/interrupts | head -1) | grep "Kernel modules:" | awk '{print $3}') | grep "^name:" | cut -d' ' -f2)

硬中断雪崩极少由用户态进程“发起”,更多是驱动、固件、硬件或虚拟化层缺陷被特定负载触发。/proc/interrupts提供的是客观事实入口,关键在读懂数值背后的上下文——谁在响、为什么响、是否该响。不复杂但容易忽略。

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

1940

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

268

21

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

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

2023.06.21

2647

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

1623

10

linux find
linux find

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

2023.06.30

1271

5

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

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

2023.07.05

2610

7

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

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

2023.07.06

2372

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

1634

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

1206

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ubuntu官方总文档
ubuntu官方总文档

共0课时 | 0人学习

Linux man-pages 项目
Linux man-pages 项目

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.4万人学习