我的Raspberry Pi上有4个CPU内核和一张以太网卡。我需要将来自NIC的中断路由到所有4个CPU内核。我将/proc/irq/24/smp_affinity
设置为0xF
(1111),但这无济于事。在/proc/interrupts
的第六列中,我没有看到IO-APIC(它确实支持相似性路由),但没有看到GICv2。仍然找不到有关GICv2和smp_affinity的任何有用信息。
GICv2是否支持SMP相似性路由?
TL; DR-/ proc / irq / 24 / smp_affinity的存在表示您的Linux SMP系统支持相似性。文本IO-APIC是中断控制器(典型的PC)的类型,它确实NOT表示系统可以处理关联。在ARM系统上,GIC通常是中断控制器,尽管某些中断可以路由到“子控制器”。
[根据supporting some affinities,至少主线为Kconfig。但是,我不确定您要做什么。该中断只能在一个CPU上运行,因为只有一个CPU可以从NIC中删除数据。如果特定的CPU正在运行网络代码,而其余的用于其他目的,则关联性是有意义的。
该核心上的数据可能不会在缓存中,因为NIC缓冲区可能是DMA且不可缓存。因此,我真的不确定您将实现什么目标,或者您希望中断如何在所有四个CPU上运行?如果您有四个NIC接口,则可以将每个接口固定到一个CPU。这可能有助于解决功耗问题。
特别是对于四个CPU,亲和力掩码0xf将禁用任何亲和力,这是默认情况。您可以cat /proc/irq/24/smp_affinity
查看设置的亲和力。另外,此文件的存在将表明您的Linux SMP系统支持相似性。文本IO-APIC是中断控制器(典型的PC)的类型,它的确NOT表示系统可以处理关联。
另请参见: