You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载eBPF程序导致ixgbe驱动的IRQ亲和性被修改,如何禁用该行为?

加载eBPF程序导致ixgbe驱动的IRQ亲和性被修改,如何禁用该行为?

这个问题其实是ixgbe驱动在加载XDP(eBPF的一种)程序时的默认优化行为,属于预期情况,但确实会干扰你手动配置的IRQ亲和性规则,下面给你拆解原因和解决办法:

为什么会发生这种情况?

当你用native模式加载XDP程序时,ixgbe驱动会触发一次网卡队列相关的初始化调整——从你提供的dmesg日志里的removed PHC/registered PHC也能看出来,驱动在重新初始化时间同步组件的同时,会自动调整IRQ的CPU亲和性,目的是为XDP程序优化CPU调度(比如对齐NUMA节点、避免跨核资源竞争)。这种自动调整会直接覆盖你之前手动设置的/proc/irq/X/smp_affinity配置。

解决办法

方法一:禁用ixgbe驱动的自动IRQ亲和性调整

ixgbe驱动提供了模块参数可以关闭这个自动优化逻辑,具体操作如下:

  1. 临时生效(重启后失效):
    先卸载ixgbe模块,再重新加载并指定参数:

    sudo rmmod ixgbe
    sudo modprobe ixgbe irq_affinity_policy=0
    

    这里irq_affinity_policy=0表示驱动不会自动设置IRQ亲和性,会完全保留你手动配置的结果。

  2. 永久生效:
    把参数写入驱动配置文件,让系统每次加载ixgbe时都应用这个设置:

    echo "options ixgbe irq_affinity_policy=0" | sudo tee /etc/modprobe.d/ixgbe.conf
    

    之后重启系统或者重新加载驱动即可。

方法二:加载XDP后重新应用手动配置

如果不想修改驱动参数,也可以在加载XDP程序之后,立刻运行你的IRQ亲和性配置脚本,覆盖驱动自动调整的结果。比如写一个简单的批量执行脚本:

#!/bin/bash
# 加载XDP程序
xdp-loader load -m native int0 test.o
# 重新设置IRQ亲和性
python3 your_irq_config_script.py

这样每次加载XDP后都会自动恢复你的手动映射规则。

额外验证

修改完配置后,你可以再次加载XDP程序,然后运行python3 show_ints.py检查队列->核心的映射,应该会保持你手动设置的结果,不会再出现先偶数后奇数的重排了。

备注:内容来源于stack exchange,提问作者Strags

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:04:29