网卡中断手动绑核

计算操作系统技术服务知识库
前言

相比使用内核的irqbalance使网卡中断在所有核上进行调度,使用手动绑核将中断固定住CPU能有效提高业务网络收发包的能力。

irq 亲缘绑定

/proc/irq/[irq_num]/smp_affinity_list 可以查看指定中断当前绑定的CPU核 /proc/interrupts 文件中可以看到CPU上的中断情况 /proc/irq/[irq_num]/smp_affinity_list 为中断号为IRQ_NUM的中断绑定的CPU核的情况

网卡绑定

手动将网卡中断手动绑定到CPU

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

  1. cat /proc/interrupts | egrep "input|output|CPU" 查看网卡队列中断号,如下截图为63 、64、65、66 图片
  2. 将中断63-66 绑定到CPU 1 上
echo 1 > /proc/irq/63/smp_affinity_list
echo 1 > /proc/irq/64/smp_affinity_list
echo 1 > /proc/irq/65/smp_affinity_list
echo 1 > /proc/irq/66/smp_affinity_list

/proc/irq/[irq_num]/smp_affinity:该文件存放的是 CPU 位掩码(十六进制)。 /proc/irq/[irq_num]/smp_affinity_list:该文件存放的是 CPU 列表(十进制)。注意:CPU 核心个数用表示编号从 0 开始,如 CPU0, CPU1 等。

  1. 验证,此时网卡中断将只在CPU1上
# 持续收发包,比如ping
# cat /proc/interrupts | egrep "input|output|CPU"  #保留结果
# cat /proc/interrupts | egrep "input|output|CPU"  #过几秒后再执行
# 检查CPU1 上数量持续增长,CPU0无增长则表示绑定成功

如果您有其他问题,欢迎您联系火山引擎技术支持服务

40
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论