irq – 夏清然的日志 https://www.qingran.net Xia Qingran Geek Blog Sun, 07 Aug 2016 09:50:33 +0000 en-US hourly 1 https://wordpress.org/?v=4.6.1 112893047 GNU/Linux使用LVS在多核、多CPU下网卡中断分配调优 https://www.qingran.net/2010/05/gnulinux%e4%bd%bf%e7%94%a8lvs%e5%9c%a8%e5%a4%9a%e6%a0%b8%e3%80%81%e5%a4%9acpu%e4%b8%8b%e7%bd%91%e5%8d%a1%e4%b8%ad%e6%96%ad%e5%88%86%e9%85%8d%e8%b0%83%e4%bc%98/ https://www.qingran.net/2010/05/gnulinux%e4%bd%bf%e7%94%a8lvs%e5%9c%a8%e5%a4%9a%e6%a0%b8%e3%80%81%e5%a4%9acpu%e4%b8%8b%e7%bd%91%e5%8d%a1%e4%b8%ad%e6%96%ad%e5%88%86%e9%85%8d%e8%b0%83%e4%bc%98/#comments Tue, 04 May 2010 09:53:15 +0000 https://www.qingran.net/?p=410 最近一个哥们在做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,见文档详细说明:
]]>
https://www.qingran.net/2010/05/gnulinux%e4%bd%bf%e7%94%a8lvs%e5%9c%a8%e5%a4%9a%e6%a0%b8%e3%80%81%e5%a4%9acpu%e4%b8%8b%e7%bd%91%e5%8d%a1%e4%b8%ad%e6%96%ad%e5%88%86%e9%85%8d%e8%b0%83%e4%bc%98/feed/ 1 410