---
title: 配置网卡中断绑核
description: "相比使用内核的irqbalance使网卡中断在所有核上进行调度，使用手动绑核将中断固定，能有效提高业务网络收发包的能力。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Kafka/kunpengkafkahdp_05_0013.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Kafka/kunpengkafkahdp_05_0013.html
indexId: e1805b170ae4faf56452d1cc5954e945626e7e0b19a87960c9a1bd088fe8cb5f72
---
# 配置网卡中断绑核

#### 目的

相比使用内核的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个队列，将这些中断逐个绑至所在NUMA node的16个core上（例如此处就是绑到NUMA node1对应的48～63上面）。

  a. 创建脚本。
    1 vi smartIrq.sh

  b. 按“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

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 进行中断绑核。
    1 bash smartIrq.sh

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

  a. 创建脚本。
    1 vi irqCheck.sh

  b. 按“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

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 查看是否绑核成功。
    当显示中断请求（IRQ）时，表示绑定核心成功。 1 sh irqCheck.sh enp131s0
