|
本帖最后由 dominic 于 2022-12-30 13:27 编辑
2022-12-30更新:从9.008代码开始realtek 发布的代码又关闭了RSS功能,
r8125_n.c 代码以下代码片段确定了EnableRss 为0,也就是关闭了RSS功能。所以最后效果是1个rx队列 2个tx队列了,HwSuppNumTxQueues还是2。
#ifndef ENABLE_LIB_SUPPORT
switch (tp->mcfg) {
case CFG_METHOD_4:
case CFG_METHOD_5:
case CFG_METHOD_7:
if (tp->HwSuppIsrVer == 2) {
tp->RequireRduNonStopPatch = 1;
tp->EnableRss = 0;
}
break;
}
#endif
ENABLE_LIB_SUPPORT 如果设置为y的话,源代码中却有缺少r8125_lib.h和r8125_lib.c文件。只能凑合用用吧。
========================
RTL8125B是realtek作为PC上使用的2.5G网卡芯片,2020年和 2021年,这芯片作为好多软路由设备或者轻NAS设备板载芯片很受欢迎。
realtek官方发布了r8125 驱动,最新版本是9.007.01,很可惜官方驱动默认关闭了RSS(rx 的多队列支持,)也关闭了TX的多队列。
RTL8125B硬件上设计是支持32个队列的,这个可以通过lspci -vv | grep MSI-X确认,观察/proc/interrupts 可以发现每块网卡都有32个队列,只有0和16号对了有数据而且都集中在cpu0上,这是典型的单队列运行模式
刚开始的时候我通过脚本来手动调整几块网卡的软中断分配到几个cpu核心上,前些时候处理ikuai 端口断开再连接的毛病的时候仔细看了一下官方驱动。驱动代码是支持RSS和TX驱动的,而且代码中对于RX使用4个队列
TX使用2个队列, 参见r8125_n.c中rtl8125_init_software_variable函数。
- switch (tp->mcfg) {
- case CFG_METHOD_4:
- case CFG_METHOD_5:
- case CFG_METHOD_7:
- tp->HwSuppNumTxQueues = 2;
- tp->HwSuppNumRxQueues = 4;
- break;
- default:
- tp->HwSuppNumTxQueues = 1;
- tp->HwSuppNumRxQueues = 1;
- break;
- }
复制代码
这样就简单了,只需要更改官方代码的src目录下Makefile文件 再编译驱动就好了,Makefile中找到ENABLE_MULTIPLE_TX_QUEUE和 ENABLE_RSS_SUPPORT 后面更改为y就好
ENABLE_MULTIPLE_TX_QUEUE = y
ENABLE_RSS_SUPPORT = y
如果要同时关闭ASPM,修改CONFIG_ASPM 就好
CONFIG_ASPM = n
这样使用RTL8125B作为软路由或者ALLINONE的可以更改官方驱动文件 自编译驱动就可以更完美了。
如果使用pve或者unraid 且使用了DKMS,比如awesometic/realtek-r8125-dkms的deb包安装驱动的话,可以执行一下命令来完成修改
- cd /usr/src/r8125-9.007.01
- sed -i 's/ENABLE_MULTIPLE_TX_QUEUE = n/ENABLE_MULTIPLE_TX_QUEUE = y/g' src/Makefile
- sed -i 's/ENABLE_RSS_SUPPORT = n/ENABLE_RSS_SUPPORT = y/g' src/Makefile
- dkms remove r8125/9.007.01 -k 5.13.19-2-pve
- dkms build r8125/9.007.01 -k 5.13.19-2-pve --force-version-override
- dkms install r8125/9.007.01 -k 5.13.19-2-pve --force-version-override
复制代码
其中 5.13.19-2-pve为对应的内核名称 -k之后可以用Tab键补齐。这个时候modinfo r8125 应该可以看到输出信息version: 9.007.01-NAPI-RSS,在NAPI后面多了RSS。
重启后生效。
重启之后可以grep -E enp* /proc/interrupts 来查看效果,cpu0 cpu1 cpu2 cpu3 都有中断了。
这样开启rx tx的多队列支持。
我的J4125 CPU 和PVE7.1-8 拷机12小时稳定无错误。PVE对虚拟机开启多队列支持之后,虚拟机里面ethtool -L也可以开始多队列了。
补 自编译 dkms deb包:
2022.03.18更新 :
2022.05.01更新:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|