夜雨聆风学习资料网

ARTICLE · 1208262

Linux 6.12 源码深度剖析: irq_exit

Linux 6.12 源码深度剖析: irq_exit

如图所示,忙如狗了。有台高性能网络设备,平时跑得好好的。一到流量高峰,延迟突然飙升,连接开始超时。

查了一圈发现,原来是定制内核里的网络驱动惹的祸。它在处理特殊数据包时,中断函数里塞了太多耗时逻辑。甚至错误地绕过了 irq_exit 这个关键节点。

这会导致 __irq_exit_rcu() 迟迟不被调用。RCU 宽限期没法推进,回调函数全被卡住。内存释放和网络清理都停摆,最后直接拖垮整个系统。

排查这种坑,别光盯着 CPU 占用率看。用 ftrace 抓一下 irq_handler_entry 和 irq_handler_exit。看看是不是某个中断处理太久没退出。

硬中断处理必须短小精悍。任何耗时操作都得扔给软中断或工作队列。千万别在中断里拿睡眠锁,也别试图绕过 irq_exit。

原文Linux 6.12 源码深度剖析: irq_exit
收录于linux短文
作者提示: 个人观点,仅供参考
四川,3小时前,

相关学习资料