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

配置网卡中断绑核

目的

相比使用内核的irqbalance使网卡中断在所有核上进行调度,使用手动绑核将中断固定住能有效提高业务网络收发包的能力。

方法

  1. 关闭irqbalance。

    若要对网卡进行绑核操作,则需要关闭irqbalance。

    • 停止irqbalance服务,重启失效。
      1
      systemctl stop irqbalance.service
      
    • 关闭irqbalance服务,永久有效。
      1
      systemctl disable irqbalance.service
      
    • 查看irqbalance服务状态是否已关闭。
      如果服务已关闭,状态将显示为“inactive”。
      1
      systemctl status irqbalance.service
      
  2. 查看网卡PCI设备号,假设当前网卡名为enp131s0。
    1
    ethtool -i enp131s0
    

  3. 查看PCIe网卡所属NUMA node。
    1
    lspci -vvvs <bus-info>
    

  4. 查看NUMA node对应的core的区间,例如此处就可以绑到48~63。
    1
    lscpu
    

  5. 进行中断绑核,1822网卡共有16个队列,将这些中断逐个绑至所在NumaNode的16个Core上(例如此处就是绑到NUMA node1对应的48~63上面)。
    1. 创建脚本。
      1
      vi smartIrq.sh
      
    2. “i”进入编辑模式,在文件中添加以下内容。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      #!/bin/bash
      irq_list=(`cat /proc/interrupts | grep enp131s0 | awk -F: '{print $1}'`)
      cpunum=48  # 修改为所在node的第一个Core
      for irq in ${irq_list[@]}
      do
      echo $cpunum > /proc/irq/$irq/smp_affinity_list
      echo `cat /proc/irq/$irq/smp_affinity_list`
      (( cpunum+=1 ))
      done
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 进行中断绑核。
      1
      bash smartIrq.sh
      
  6. 利用脚本查看是否绑核成功。
    1. 创建脚本。
      1
      vi irqCheck.sh
      
    2. “i”进入编辑模式,在文件中添加以下内容。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      #!/bin/bash
      # 网卡名
      intf=$1
      log=irqSet-`date "+%Y%m%d-%H%M%S"`.log
      # 可用的CPU数
      cpuNum=$(cat /proc/cpuinfo |grep processor -c)
      # RX TX中断列表
      irqListRx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')
      irqListTx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')
      # 绑定接收中断rx irq
      for irqRX in ${irqListRx[@]}
      do
      cat /proc/irq/${irqRX}/smp_affinity_list
      done
      # 绑定发送中断tx irq
      for irqTX in ${irqListTx[@]}
      do
      cat /proc/irq/${irqTX}/smp_affinity_list
      done
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 查看是否绑核成功。
      当显示中断请求(IRQ)时,表示绑定核心成功。
      1
      sh irqCheck.sh enp131s0