在我的工作站上,/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 核)上,有七个这样的中断。
这是否取决于处理器的数量?IO-APIC 级别是软件中断吗?
我想将 PCI-MSI 中断分配给我的网卡以提高性能。
IIRC PC 可以有任意数量的 MSI 中断。但是每个设备限制为 32 个(对于 PCI 2.2)或 2048 个(对于 PCI 3.0)MSI 中断。
另请参阅有关消息信号中断的 wiki
从一些基础研究看来,不同的硬件会有不同的数字。
“网卡的每个接收 DMA 通道可以产生一个中断,每个中断会针对一个 CPU。Sun 多线程 10GbE 每个端口有 8 个接收 DMA 通道,而 Quad GbE 有 4 个,因此它们的中断最多可以针对 8 个和 4 个为避免中断 CPU 成为性能瓶颈,建议从每个端口的接收 DMA 通道数或 (# of CPU) 中的较低者开始,以便将中断负载分配到足够多的 CPU中央处理器。”
来自http://www.solarisinternals.com/wiki/index.php/Networks
因此,我们需要了解您的主板/proc/NIC 以找出最佳设置。
“边缘”和“电平”是指边缘触发和电平触发,这在硬件领域是一个很大的区别。只有在谈论并行 PCI 总线的 4 条物理中断线时,这种区别才有意义,除非它是这种行为的软件仿真或在 PCIe-PCI 桥(有时在扩展板内使用)后面的并行总线段上。