在我的工作站上,/proc/interrupts 中只收到两个 PCI-MSI 中断:
0: 11726919 0 IO-APIC-edge timer
1: 3 0 IO-APIC-edge i8042
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 4 0 IO-APIC-edge i8042
58: 13 94016 PCI-MSI eth0
169: 843271 71766622 IO-APIC-level uhci_hcd:usb3, eth1, HDA Intel
201: 1 0 IO-APIC-level uhci_hcd:usb4, uhci_hcd:usb6
209: 0 0 IO-APIC-level ehci_hcd:usb1
217: 2 0 IO-APIC-level ehci_hcd:usb2, uhci_hcd:usb5
225: 27 72309141 IO-APIC-level uhci_hcd:usb7, eth2
233: 6683 103839 PCI-MSI ahci
NMI: 2236 4056
LOC: 11696665 11696593
ERR: 0
MIS: 0
在其他更强大的 RACK Dell 机器(8 核)上,有 7 个这样的中断。
这取决于处理器的数量吗?IO-APIC 级别是软件中断吗?
我想将 PCI-MSI 中断分配给我的网卡以提高性能。
答案1
IIRC PC 可以有任意数量的 MSI 中断。但每个设备限制为 32 个(对于 PCI 2.2)或 2048 个(对于 PCI 3.0)MSI 中断。
也可以看看有关消息信号中断的 wiki
答案2
从一些基础研究来看,不同的硬件似乎会有不同的数字。
“NIC 的每个接收 DMA 通道都可以生成一个中断,每个中断将针对一个 CPU。Sun Multi-threaded 10GbE 每个端口有 8 个接收 DMA 通道,而 Quad GbE 有 4 个,因此它们的中断分别最多可以针对 8 个和 4 个不同的 CPU。为了避免中断 CPU 成为性能瓶颈,建议从每个端口的接收 DMA 通道数或(CPU 数量)中的较低者开始,以便将中断负载分配给足够的 CPU。”
从http://www.solarisinternals.com/wiki/index.php/Networks
因此我们需要了解您的主板/proc/NIC,以找出最佳设置。
答案3
“边缘”和“级别”指的是边缘触发与级别触发,这在硬件领域有很大区别。只有在谈论并行 PCI 总线的 4 条物理中断线时,这种区别才有意义,除非它是此类行为的软件模拟,或者在 PCIe-PCI 桥后面的并行总线段上(有时在扩展板内使用)。