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

#### 目的

- 每个CPU对应一个网卡，每个CPU内的中断绑核只绑在属于本CPU的网卡上，按node各自绑核。
- 为了使当前所有业务核心在客户端满负载运行时达到CPU满负荷状态，应尽量减少中断次数。
- 容器在使用主机网络共享和IPVLAN网络两种网络方式下使用同样的绑核脚本，且都是在物理机上执行绑核脚本。


#### 方法

1. 关闭irqbalance。
  1 2 3 systemctl stop irqbalance.service systemctl disable irqbalance.service systemctl status irqbalance.service

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

  a. 新建脚本。
    1 vim irq_http_4core.sh

  b. 按“i”进入编辑模式，添加绑核脚本内容。
    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 | 根据中断号，将每个中断各绑定在一个核上。 |


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行脚本。
    1 sh irq_http_4core.sh
