# 疑问一
都说 cat /proc/interrupts,提供了硬中断的运行情况
通过cat /proc/interrupts获取网卡中断号,设置中断号 echo 1 > /proc/irq/30/smp_affinity_list 对应的cpu,然后给网卡打流,发现si的cpu使用率变高。
切换中断号所对应的cpu,si便切换到新的cpu,做如何理解?
/proc/interrupts 不只是硬中断,也包含了软中断?
解释:
处理 Rx Queue 硬中断的 CPU Core 也是随后进行处理收包的 CPU Core,当某个 NIC Rx Queue 收到 Frames 时,就触发自己的 IRQ,收到 IRQ 的 CPU Core 就执行 IRQ Number 对应的硬中断处理程序,最终将收包任务下发给该 Core 的 NET_RX_SOFTIRQ 实例处理(每个 Core 都有一个 NET_RX_SOFTIRQ 实例)。(参考:Linux 操作系统原理 — RSS 多队列网卡)
所以绑定的其实是网卡的硬中断处理,同步联动改了软中断的处理cpu。