最近在做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
-
Improving Network Performance in Multi-Core Systems
阅读(5175) | 评论(0) | 转发(0) |