---
title: 网卡中断绑核
description: "手动绑定网卡中断，根据网卡所属CPU将其进行分配，从而优化系统网络性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/systuningguide/tngg/kunpengdbs_tuningguide_05_0013.html
sourcePath: /source/zh/kunpengdbs/systuningguide/tngg/kunpengdbs_tuningguide_05_0013.html
indexId: b9e0540ac3d1af604156baf3b90944d5f8a07aad7d91ee61b337a6482e45803f77
---
# 网卡中断绑核

#### 目的

手动绑定网卡中断，根据网卡所属CPU将其进行分配，从而优化系统网络性能。

进行网卡中断绑核之前，需要先关闭irqbalance。


#### 方法

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

2. 关闭irqbalance服务。
  1 systemctl disable irqbalance.service

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

  状态为inactive即为关闭。

4. 网卡中断绑核。
  对于不同的硬件配置，用于绑中断的最佳CPU数目会有差异，比如对于鲲鹏920 5250处理器 + Huawei TM280 25G网卡（鲲鹏服务器的板载网卡）来说，最多可以绑定32个中断队列，建议将所有的队列都用在中断绑定上来获得最佳性能。

  以下脚本是在鲲鹏920 5250处理器 + Huawei TM280 25G网卡上的最佳绑中断设置。

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash eth1=$1 cnt=$2 bus=$3 ethtool -L $eth1 combined $cnt irq1=`cat /proc/interrupts| grep -E ${bus} | head -n$cnt | awk -F ':' '{print $1}'` irq1=`echo $irq1` cpulist=(0 1 2 3 4 5 6 7 {51..71} 93 94 95) c=0 for irq in $irq1 do echo ${cpulist[c]} "->" $irq echo ${cpulist[c]} > /proc/irq/$irq/smp_affinity_list let "c++" done

  脚本中第一个参数$1是网卡名称，第二个参数$2是队列数目32，第三个参数$3是网卡对应的总线名。
  - 网卡名称可通过如下命令查询。
    1 ip a

  - 队列数目可以通过如下命令查询获得。
    1 ethtool -l 网卡名称

  - 总线名可以通过如下命令查询获得。
    1 ethtool -i 网卡名称


5. 恢复irqbalance服务。

```
systemctl start irqbalance.service
systemctl enable irqbalance.service
```
