# 网卡中断绑核
#### 简介
网卡中断绑核是一种优化网络性能的技术，它可以将网卡的数据处理任务分配到特定的CPU核心上，从而提高网络数据的处理效率和吞吐量。本文介绍如何在HCE上配置网卡中断绑核。
#### 准备工作
准备一台ECS实例，并分配公网IP或者弹性公网IP（EIP）。
#### 前置条件
请确认irqbalance中断均衡服务已关闭，具体操作步骤如下：
1. 执行以下命令查看irqbalance中断均衡服务是否关闭： 
   ```
   systemctl status irqbalance
   ```
   如果显示Active: inactive，如下图所示，则表示服务关闭：
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002512088415.png "点击放大")
   
   
2. 如果显示Active: active，则表示服务处于运行状态，需要执行以下命令关闭irqbalance中断均衡服务： 
   ```
   systemctl stop irqbalance
   ```
   
   
3. （可选）如果需要禁用开机启动，则执行以下命令永久关闭irqbalance中断均衡服务： 
   ```
   systemctl disable irqbalance
   ```
   
   
 
#### 操作步骤
1. 执行以下命令查看网卡队列数，本例中有两个网卡队列，每个队列分别对应一个输入和输出中断： 
   ```
   ethtool -l eth0
   ```
   ![](https://support.huaweicloud.com/bestpractice-hce/public_sys-resources/note_3.0-zh-cn.png)
   eth0为网卡名，请根据实际情况进行替换，以下步骤均以eth0举例。
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002512088423.png "点击放大")
   
   
2. 执行lscpu查看当前CPU个数，本例有4个CPU核心： 
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002512088417.png "点击放大")
   
   
3. 执行以下命令查看当前网卡队列对应中断： 
   ```
   cat /proc/interrupts | grep virtio0 | awk '{print $1 $(NF)}'
   ```
   本例中eth0的数据输入使用的中断号分别是25和27，数据输出使用的中断号分别是26和28：
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002512088419.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-hce/public_sys-resources/note_3.0-zh-cn.png)
   网卡和virtio的对应关系可以通过以下命令进行查看：
   ```
   ethtool -i eth0 | grep bus-info | awk -F "bus-info:" '{print $2}' | xargs -I {} ls /sys/bus/pci/drivers/virtio-pci/{} | grep virtio
   ```
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002512128443.png "点击放大")
   
   
4. 执行以下命令查看当前网卡中断绑定情况： 
   ```
   cat /proc/irq/{25,26,27,28}/smp_affinity_list
   ```
   本例中25,26,27,28号中断均绑定在CPU3上：
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002480088528.png "点击放大")
   
   
5. 手动绑定网卡中断： 
   执行以下命令将eth0的数据输入中断分别绑定到CPU0和CPU1：
   ```
   echo 0 > /proc/irq/25/smp_affinity_list
   echo 1 > /proc/irq/27/smp_affinity_list
   ```
   执行以下命令将eth0的数据输出中断分别绑定到CPU2和CPU3：
   ```
   echo 2 > /proc/irq/26/smp_affinity_list
   echo 3 > /proc/irq/28/smp_affinity_list
   ```
   
   
6. 验证网卡中断绑定是否成功： 
   执行以下命令查看网卡中断绑定情况：
   ```
   cat /proc/irq/{25,26,27,28}/smp_affinity_list
   ```
   ![](https://support.huaweicloud.com/bestpractice-hce/zh-cn_image_0000002479928550.png "点击放大")
   显示已按照预期情况绑定。
   
   
 
