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

May 4th, 2010 1 comment

最近一个哥们在做LVS做load balance测试时发现在并发达到1w以后网卡中断只占用了一个CPU,最终导致此CPU的100%,性能再无法提升。

逐步尝试以下方法:

  1. 修改内核参数irqbalance。印象中此参数能把网卡中断平分到多个CPU上。但是查询最新文档发现此参数在最新的内核中已经不存在;
  2. 使用设备中断的smp_affinity:
    • 首先先从/proc/interrupts里查到网卡的中断号,eth0或者bg0所在行的第一列;
    • 修改/proc/irq/<中断编号>/ 下修改 smp_affinity 文件内容。这个文件是一个位掩码,01意味着只有第一个CPU能处理中断,0F意味着四个CPU都会参与处理中断。
    • 但是经过测试发现此方法能把网卡中断绑定到指定的CPU上,但是不能在多个CPU间平均分配。
  3. 使用user space态下的irqbalance daemon,未得到反馈,估计无效;
  4. 使用Intel高端网卡82575,见文档详细说明: