更新时间:2025-10-09 GMT+08:00

网卡中断绑核

简介

网卡中断绑核是一种优化网络性能的技术,它可以将网卡的数据处理任务分配到特定的CPU核心上,从而提高网络数据的处理效率和吞吐量。本文介绍如何在HCE上配置网卡中断绑核。

准备工作

准备一台ECS实例,并分配公网IP或者弹性公网IP(EIP)。

前置条件

请确认irqbalance中断均衡服务已关闭,具体操作步骤如下:

  1. 执行以下命令查看irqbalance中断均衡服务是否关闭:

    systemctl status irqbalance

    如果显示Active: inactive,如下图所示,则表示服务关闭:

  2. 如果显示Active: active,则表示服务处于运行状态,需要执行以下命令关闭irqbalance中断均衡服务:

    systemctl stop irqbalance

  3. (可选)如果需要禁用开机启动,则执行以下命令永久关闭irqbalance中断均衡服务:

    systemctl disable irqbalance

操作步骤

  1. 执行以下命令查看网卡队列数,本例中有两个网卡队列,每个队列分别对应一个输入和输出中断:

    ethtool -l eth0

    eth0为网卡名,请根据实际情况进行替换,以下步骤均以eth0举例。

  2. 执行lscpu查看当前CPU个数,本例有4个CPU核心:

  3. 执行以下命令查看当前网卡队列对应中断:

    cat /proc/interrupts | grep virtio0 | awk '{print $1 $(NF)}'

    本例中eth0的数据输入使用的中断号分别是25和27,数据输出使用的中断号分别是26和28:

    网卡和virtio的对应关系可以通过以下命令进行查看:

    ethtool -i eth0 | grep bus-info | awk -F "bus-info:" '{print $2}' | xargs -I {} ls /sys/bus/pci/drivers/virtio-pci/{} | grep virtio

  4. 执行以下命令查看当前网卡中断绑定情况:

    cat /proc/irq/{25,26,27,28}/smp_affinity_list

    本例中25,26,27,28号中断均绑定在CPU3上:

  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

    显示已按照预期情况绑定。