根据lshw
,我得到:
产品:AR8121/AR8113/AR8114 千兆位或快速以太网
供应商:Qualcomm Atheros
驱动程序=ATL1E 驱动程序版本=1.0.0.7-NAPI(来自 linux-5.4)
我想找到一种方法来调整中断合并;如果可能的话,环形缓冲区和杂项的大小。卸载
但无论我尝试使用什么,ethtool
都会返回该功能不受支持(很可能是因为非常有限)atl1e_ethtool(*1))
命令这些设置的参数似乎被硬编码到atl1e_param.c,并进一步向下滚动,可以发现 atl1e_check_options 例程“检查所有命令行参数是否有效的用户输入。”并相应地修改默认的硬编码参数。
我推断该模块将支持此类启动命令行参数atl1e.param_name=value
但……
但我只是找不到有关接受的 param_names 列表的任何线索。
有人可以帮我找到它们吗?
1:因为我从免费的 BSD 驱动程序那 ”ale 驱动程序支持的所有 LOM 都具有用于接收和传输的 TCP/UDP/IP 校验和卸载、TCP 分段卸载 (TSO)、硬件 VLAN 标记剥离/插入功能、网络唤醒 (WOL) 和中断合并/仲裁机制以及 64 位多播哈希过滤器。”
答案1
由于我设法通过 atl1e 源代码找到了方法,并且由于我在那里发现了错误的代码注释,更重要的是,因为这个设施在地球上绝对没有记录,所以我将以下内容发布为答案并将接受它。
什么 :
Linux ATL1E 驱动程序确实接受一些参数,以启用据报告次优 ethtool 不支持的杂项调整:
- tx_desc_cnt:传输描述计数: 32 <= 值 <= 1020 : 默认 128
对于那些希望使用不受支持的ethtool -G tx <value>
来更改 tx 环条目数量的人。
< MyOpinion > 对于任何家庭路由器/桌面局域网来说,默认值都太高了。保持此设置会不知不觉地浪费 RAM,更不用说不合理地增加任何内核故障转储大小。至少减半。 </我的意见>
- rx_mem_大小:rx buffer内存大小(KB): 8 <= 值 <= 1024 : 默认 256
对于那些希望使用不受支持的ethtool -G rx <value>
来更改接收环形缓冲区大小的人。
< MyOpinion > 我想将其从默认值增加,以减少 rx 超限量……嗯……可能确实如此……但……不知何故,数量并不明显。然而……增加它确实会显著增加网络延迟。</MyOpinion >
- 媒体类型:媒体类型选择: 0 <= 值 <= 4 : 默认 0
0 - 在所有支持的速度下自动协商
1 - 仅以 100 Mbps 全双工链接
2 - 仅以 100 Mbps 半双工链接
3 - 仅以 10 Mbps 全双工链接
4 - 仅以 10 Mbps 半双工链接
对于那些希望使用不受支持的设备ethtool -s advertise <value>
来强制达到广告中的速度和双工的人。
< MyOpinion > 只有那些遇到默认自动协商问题的人才会希望该参数的值不同于 null </MyOpinion >
- int_mod_timer,中断中等定时器(以 2 µs 为单位): 50 <= 值 <= 65000 : 默认 100
对于那些希望使用无支持ethtool -C [rx/tx]-usecs <value>
来更改合并设置的人。
<我的意见>这对系统影响最大的设置。再次运行典型工作负载(网络流量)进行基准测试...因为...没有免费的午餐...值越高,NET_RX/TX 软件中断越少,用于服务 IRQ 的时间越少...但是...网络延迟越高。 </我的意见>
和… ?这就是全部,各位,您不能对这个驱动程序有更多期望。校验和卸载 ?托索?哦,好吧……没关系!
如何 :
只需将一些字符串附加到启动命令行中,无论您是在内核中构建驱动程序还是作为模块构建驱动程序,该字符串都将起作用:
atl1e.<any_one of above parameter_name>=<value>
好吧,你有几个网卡吗?没问题,这只是一个数组:
atl1e.<any_one of above parameter_name>=<value_for_NIC0>,<value_for_NIC1>,…
好吧,您只是讨厌内核命令行,将此驱动程序构建为模块并想使用 modprobe ?然后简单地:
modprobe atl1e <any_one of above parameter_name>=<value_for_NIC0>,<value_for_NIC1>,…
附注:MSI 功能
相应的硬件应该具有 MSI 功能,但是
由于某些严重的热点有时在其硬件上遇到了一些严重的问题,因此应用了一些补丁来禁用此功能,回退到某些 IRQ。
由于我的硬件原因,我的 NIC 会与我的其中一张声卡共享 IRQ!霍雷斯科参考!
我只是简单地恢复了补丁,并再次进行了测试……嗯……在过去 10 年里,启用 MSI 后,一切都运行顺利。我将根据需要提供更多相关信息。
结论 :
我确实意识到,在撰写本文时,相应的硬件所做的不仅仅是接近过时……(这些行的作者也是如此……)因此……这个 Tl;Dr 的答案不会对这里的很多人有帮助。
我很乐意帮助那些有勇气读到这里的人:
- 永远不要盲目相信内核怪癖!对您自己的系统进行基准测试、基准测试、再次基准测试。您将比任何内核开发人员更了解它。
- 当你变得如此愚蠢时,永远不要相信 ethtool不支持操作判决。许多编辑驱动程序的公司不太关心提供 ethtool 帮助程序,更不关心文档......因此......深入研究代码:有志者事竟成!