You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于Mellanox ConnectX-5 100GB网卡接收队列数量为服务器核心数两倍的问题咨询

关于Mellanox ConnectX-5 100GB网卡接收队列数量为服务器核心数两倍的问题咨询

嗨,我来帮你搞定这个队列数不匹配的问题~首先得搞清楚原因:Mellanox ConnectX-5用的mlx5驱动,默认会根据系统在线CPU数量初始化收发队列,哪怕你禁用了SMT,驱动的默认逻辑有时候还是会把队列数设为物理核心数的两倍,这就是你看到64个RX队列的由来。

下面给你两种解决思路,临时生效和永久生效的都有:

1. 临时调整队列数(重启后失效)

先确认当前队列配置,把<你的网卡名称>换成实际网卡名(比如ens1f0),执行命令:

ethtool -l <你的网卡名称>

这个命令会显示当前RX/TX队列数,以及网卡支持的最大队列数。

接着把队列数改成和核心数一致的32:

ethtool -L <你的网卡名称> rx 32 tx 32

再用ethtool -l <你的网卡名称>验证一下,确认队列数已经调整成功。

2. 永久设置队列数(重启后依然生效)

如果想让配置在重启后保持不变,可以通过udev规则实现:

  • 创建规则文件:/etc/udev/rules.d/90-mellanox-queues.rules
  • 在文件里添加以下内容(记得替换<你的网卡名称>):
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="mlx5_core", ATTR{name}=="<你的网卡名称>", RUN+="/sbin/ethtool -L %k rx 32 tx 32"
    
  • 保存后重新加载udev规则,让配置立即生效:
    udevadm control --reload-rules && udevadm trigger
    

最后补充个小建议:调整完队列数后,检查下irqbalance服务状态,它能把网卡中断请求合理分配到各个核心,让性能更均衡。用systemctl status irqbalance查看状态,没启动的话就用systemctl start irqbalance && systemctl enable irqbalance开启并设置开机自启。

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

火山引擎 最新活动