拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

12、中断与异常处理:中断亲和性、软中断、下半部机制、NMI

12、中断与异常处理:中断亲和性、软中断、下半部机制、NMI 中断,是操作系统响应硬件事件的“神经反射”。我做了这么多年性能优化,见过太多系统因为中断处理不当而“卡死”。说白了,中断就像你家门铃——有人按了,你得去开门。但如果每次开门都跟客人聊半小时,那正事就别干了。这一章,我们聊聊中断的那些“门道”。25.1 中断亲和性:把中断绑在正确的CPU上先问一个问题:一个网卡中断来了,该由哪个CPU处理?默认情况下,中断会随机分配给某个CPU。这听起来公平,但性能上可能是灾难。为什么?因为CPU的L1/L2缓存是私有的。如果中断频繁在不同CPU间“漂移”,缓存命中率会直线下降。核心原则:中断亲和性,就是把特定中断绑定到特定CPU(或CPU集合)上,让缓存“热”起来。我曾在项目中遇到一个网络转发服务,吞吐量死活上不去。用mpstat -I一看,网卡中断在4个CPU之间来回跳,每个CPU的L1缓存命中率不到60%。后来我把中断绑定到两个CPU上,吞吐量直接提升了35%。设置方法很简单:# 查看中断号(以eth0为例) cat /proc/interrupts | grep eth0 # 设置中断亲和性(假设中断号为 48) echo "3" /proc/irq/48/smp_affinity # "3" 表示二进制 0011,即绑定到 CPU0 和 CPU1我的习惯:对于高吞吐网卡(如10G/25G),我会把中断绑定到物理核上,避开超线程核。因为超线程核共享执行单元,处理中断时容易互相干扰。25.2 软中断:中断的“下半场”硬件中断处理必须快——通常只做最必要的事,比如拷贝数据、清除中断标志。剩下的“脏活累活”交给谁?软中断。软中断(SoftIRQ)是Linux下半部机制的一种。它运行在中断上下文中,但可以被更高优先级的中断抢占。常见的软中断类型:软中断类型
返回列表