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

网络收发IOPS或流量高

网口中断绑核

  1. 关闭irqbalance。

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

    1. 执行以下命令,停止irqbalance服务,重启失效。

      systemctl stop irqbalance.service

    2. 执行以下命令,关闭irqbalance服务,永久有效

      systemctl disable irqbalance.service

    3. 执行以下命令,查看irqbalance服务状态是否已关闭

      systemctl status irqbalance.service

  2. 执行以下命令,查看网卡pci设备号,举例当前网卡名为enp131s0

    ethtool -i enp131s0

    查询结果如下。

    driver:hinic
    version:2.3.2.1
    firmware-version:2.3.2.1
  3. 执行以下命令,查看pcie网卡所属NUMA Node。

    lspci -vvvs <bus-info>

    查询结果如下。

  4. 执行以下命令查看NUMA Node对应的core的区间,例如此处就可以绑定到48~71。

    lscpu

  5. 进行中断绑核操作,1822网卡上共计有16个队列,将这些中断逐个绑定至所在NUMA Node的16个core上(此处举例中断绑定至NUMA node2 对应的48~63上面)。

    脚本内容如下:

    #!/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

    执行以下命令编辑脚本。

    bash smartIrq.sh

  6. 利用脚本查看是否绑核成功。

    脚本内容如下。

    #!/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
    don

    执行脚本查看是否绑核成功。

    sh irqCheck.sh enp131s0

    查询结果如下。