---
title: 配置网卡中断绑核
description: "1. 每个CPU对应一个网卡，每个CPU内的中断绑核只绑在属于本CPU的网卡上，按node各自绑核。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcdns/ecosystemEnable/tngg/kunpengcdn_05_0014.html
sourcePath: /source/zh/kunpengcdns/ecosystemEnable/tngg/kunpengcdn_05_0014.html
indexId: bdb89b06fbc69ac553c2e295f56fee8be786d3f852f21dc988132faab7ccd65b67
---
# 配置网卡中断绑核

#### 目的

1. 每个CPU对应一个网卡，每个CPU内的中断绑核只绑在属于本CPU的网卡上，按node各自绑核。
2. 中断个数在尽量少的情况下满足当前所有业务core在客户端满压下CPU满负荷运行即可。
3. 容器在使用主机网络模式和IPVLAN网络两种网络方式下使用同样的绑核脚本，且都是在物理机上执行绑核脚本。


#### 方法

1. 关闭irqbalance。
若要对网卡进行绑核操作，需要关闭irqbalance。

  a. 停止irqbalance服务。
    1 systemctl stop irqbalance.service

    上述停止irqbalance服务的操作重启后会失效。若需要永久关闭irqbalance服务，可通过以下操作实现。 1 systemctl disable irqbalance.service

  b. 查看irqbalance服务状态是否已关闭。
    1 systemctl status irqbalance.service

2. 网卡中断绑核，绑定的核专门用于处理网卡中断。
  以4core的http短连接场景的绑核脚本为例，如果要修改绑核脚本，只需修改要绑定的网口队列数cnt、网口名eth1以及要绑定的core。

  绑核脚本内容如下所示：

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/bin/bash # filename: irq_http_4core.sh cnt=2 eth1=enp3s0 ethtool -L $eth1 combined $cnt irq1=`cat /proc/interrupts| grep -E ${eth1} | head -1 | awk -F ':' '{print $1}'` irq1=`echo $irq1` i=0 while(( $i < 1)) do for cpunum in 2 3 do echo $cpunum "->" $irq1 echo $cpunum > /proc/irq/$irq1/smp_affinity_list let "irq1++" done let "i++" done

  参数命令说明如表1所示。

**表1 参数及命令说明**

| 参数及命令名称 | 参数及命令解释 |
| --- | --- |
| cnt | 设置网口队列数：cnt为变量，2为队列数。 |
| eth1 | 设置通信中使用的网口名：eth1为变量，enp3s0为网口名。 |
| irq1 | 网口eth1对应的中断号：irq1为变量。 |
| cpunum | 分配给网口eth1用于处理网卡中断的核，cpunum为变量。 |
| ethtool \-L $eth1 combined $cnt | 设置队列数为核数。 |
| cat /proc/interrupts \| grep $eth1 \| awk \-F ':' '{print $1}' | 查询网口中断号。 |
| echo $cpunum > /proc/irq/$irq1/smp\_affinity\_list | 根据中断号，将每个中断各绑定在一个核上。 |
