鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

网卡绑核调优

通过将网卡中断绑定在固定的几个CPU核心上,可以降低CPU频繁调度带来的性能损耗,从而有更多的时间去处理业务。以下的绑核策略经过多次调整以及测试得出,在EC小块读写的场景下性能提升较为明显,且不影响大块读写。

  1. 关闭irqbalance。
    1
    2
    3
    systemctl stop irqbalance.service 
    systemctl disable irqbalance.service
    systemctl status irqbalance.service
    
  2. 新建绑核脚本目录。
    1
    mkdir /home/bind_net
    
  3. 查看Public Network与Cluster Network的网卡名称。
    1
    ip a
    
    • 在终端输入命令后,Public Network(192.168.3.166)对应的网卡名称为enp1330f1,Cluster Network(192.168.4.166)对应的网卡名称为enp1330f2。

  4. 搜索Public Network与Cluster Network对应网卡的中断号信息。
    1
    2
    cat /proc/interrupts |grep enp133s0f1 | awk '{print $1}' | awk -F ':' '{print $1}'
    cat /proc/interrupts |grep enp133s0f2 | awk '{print $1}' | awk -F ':' '{print $1}'
    
    • 上述命令中的enp133s0f1与enp133s0f2分别对应的是Public Network与Cluster Network对应的网卡名称,若输入命令后没有信息打印,则该网卡不支持直接通过网卡名称获取中断号,需要通过网卡bus信息获取对应的中断号。
    • 终端输入命令ethtool -i ”网卡名称”获取对应的网卡bus信息。

      如上图所示enp133s0f0np0网卡的bus信息是0000:85:00.0,将网卡名称替换为bus信息来获取对应的中断号。

      1
      cat /proc/interrupts |grep 0000:85:00.0 | awk '{print $1}' | awk -F ':' '{print $1}'
      
  5. 创建绑核脚本。
    1. 新建脚本bind_net_intterrupt.sh。
      1
      vim bind_net_intterrupt.sh
      
    2. 键入以下内容。
      1
      2
      3
      4
      5
      arr=(0 1 2 3 32 33 34 35 64 65 66 67 96 97 98 99)
      idx=0;for i in `cat /proc/interrupts |grep enp133s0f1 | awk '{print $1}' | awk -F ':' '{print $1}'`;do echo ${arr[$idx]} > /proc/irq/${i}/smp_affinity_list;((idx=(idx+1)%16));echo $idx;done
      
      arr=(0 1 2 3 32 33 34 35 64 65 66 67 96 97 98 99)
      idx=0;for i in `cat /proc/interrupts | grep enp133s0f2 | awk '{print $1}' | awk -F ':' '{print $1}'`;do echo ${arr[$idx]} > /proc/irq/${i}/smp_affinity_list;((idx=(idx+1)%16));echo $idx;done
      
      • 上述脚本中的enp133s0f1与enp133s0f2要根据4的结果进行调整,若可以通过网卡名称直接获取中断号则无需改动,若无法通过网卡名称获取,则请将网卡名称替换为其对应的网卡bus。
      • arr数组中列举的是每个NUMA的前四个CPU核心,找出网卡中的所有中断,并将其绑定到列举的CPU核心上。
  6. 执行绑核脚本。
    1
    sh bind_net_intterrupt.sh
    
  7. 执行4k块写测试用例,详细步骤请参考测试指导

    网络集中运行在每个NUMA的前四个CPU核心上。