lvs/irq引起网卡性能问题与Google RPS和RFS优化

LVS网卡软中断配置

原文:http://jasonwu.me/2012/09/08/adjust_nic_irq_for_lvs.html

这个主要是因为2.6.18还不支持RPS这个特性,具体可以参看:

如果你的服务器网卡和我一样是Broadcom的,那么你就得做这一步,不是请跳到第三步

sudo lspci|grep Ethernet
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8057 PCI-E Gigabit Ethernet Controller (rev 10)

在/etc/modprobe.conf加上下面这行:

options bnx2 disable_msi=1

改完这个重新加载下网卡模块modprobe -r bnx2;modprobe bnx2或者重新启动服务器。

这个主要是因为broadcom网卡开启msi后,会造成后面的修改smp_affinity丌生效,intel的网卡没这个问题。

关于MSI是什么:http://lwn.net/Articles/44139/

/etc/init.d/irqbalance stop

这个是一个自动调整中断的工具,有兴趣的可以看下irqbalance的官方网站: http://irqbalance.org/

相看网卡的中断号:

cat /proc/interrupts 

           CPU0       CPU1       
  0:         42          0   IO-APIC-edge      timer
  1:      92972      95568   IO-APIC-edge      i8042
  7:          0          0   IO-APIC-edge      parport0
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 14:          0          0   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 16:          0          0   IO-APIC-fasteoi   uhci_hcd:usb5
 18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 19:     777725     819541   IO-APIC-fasteoi   ata_piix, uhci_hcd:usb3
 23:      49276      50731   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
 40:          0          0   PCI-MSI-edge      PCIe PME, pciehp
 41:          0          0   PCI-MSI-edge      PCIe PME, pciehp
 42:    1853046         12   PCI-MSI-edge      eth0
 43:    1512907    1627996   PCI-MSI-edge      i915
...

图中网卡eth0的中断号为42。 将各网卡对应中断号的smp_affinity(/proc/irq/中断号/smp_affinity)设置为 ff ,修改完成后就可以开启lvs了,现在中断应该均分到各个核心上了。

smp_affinity这个参数是怎么得来的? 可参考下面链接: http://www.cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt