GNU/Linux使用LVS在多核、多CPU下网卡中断分配调优

May 4th, 2010 1 comment

最近一个哥们在做LVS做load balance测试时发现在并发达到1w以后网卡中断只占用了一个CPU,最终导致此CPU的100%,性能再无法提升。 逐步尝试以下方法: 修改内核参数irqbalance。印象中此参数能把网卡中断平分到多个CPU上。但是查询最新文档发现此参数在最新的内核中已经不存在; 使用设备中断的smp_affinity: 首先先从/proc/interrupts里查到网卡的中断号,eth0或者bg0所在行的第一列; 修改/proc/irq/<中断编号>/ 下修改 smp_affinity 文件内容。这个文件是一个位掩码,01意味着只有第一个CPU能处理中断,0F意味着四个CPU都会参与处理中断。 但是经过测试发现此方法能把网卡中断绑定到指定的CPU上,但是不能在多个CPU间平均分配。 使用user space态下的irqbalance daemon,未得到反馈,估计无效; 使用Intel高端网卡82575,见文档详细说明: Assigning Interrupts to Processor Cores using an Intel(R) 82575/82576 or 82598/82599 Ethernet Controller September http://download.intel.com/design/network/applnots/319935.pdf Improving Network Performance in Multi-Core Systems http://www.intel.com/network/connectivity/products/whitepapers/318483.pdf