我的双网卡 MSI 主板最近启动了在 100 和 1,000 Mbit 之间跳跃,导致连接中断长达数秒,这对于在家工作并召开视频会议的人来说至关重要。当系统运行 Fedora Linux 时会出现此问题,但在启动 Windows 10 时会消失。尝试了多条电缆、交换机甚至其他 NIC 均无济于事。
这似乎受负载影响。
尝试 r8169 适配器时的日志输出。结果相同,但使用板载 NIC 时措辞略有不同。
[ 192.520815] r8169 0000:05:00.0 enp5s0: Link is Up - 100Mbps/Full - flow control off
[ 229.044928] r8169 0000:05:00.0 enp5s0: Link is Down
[ 232.641128] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control off
[ 309.081390] r8169 0000:05:00.0 enp5s0: Link is Down
[ 312.684481] r8169 0000:05:00.0 enp5s0: Link is Up - 100Mbps/Full - flow control off
[ 449.145256] r8169 0000:05:00.0 enp5s0: Link is Down
[ 452.927153] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control off
[ 539.187973] r8169 0000:05:00.0 enp5s0: Link is Down
- 操作系统:Fedora 32
- 平台:X86_64
- 主板:MSI Mag Z390 Tomahawk
- 尝试过的板载网卡:Intel I219-V(igb 驱动程序)、Intel I211(e2000e 驱动程序)
- 尝试了备用 NIC:Intel CT 台式机适配器(e2002 驱动程序)、LogiLink PC0029A(r8169 驱动程序)
- 尝试过的交换机:EdgeSwitch 24、HP ProCurve
- 尝试过的电缆:各种 CAT5 至 CAT6 电缆
目标:拥有一个不会在 100 Mbit 和 1,000 Mbit 之间自发切换的 Linux 系统,这样 Teams 和 Slack 等应用程序就不会因为丢失连接而引发故障。
答案1
在向同事们给出了无数个借口、测试了一堆硬件(包括一堆最近购买的但有点便宜的 Realtek NIC)、查看了 MB 的日志文件并阅读了内核参数后,我找到了罪魁祸首。
我决定这可能与软件有关,于是我以单用户模式启动系统,并运行命令行版本的速度测试来自 Ookla。它反映了我的 ISP 宣传的带宽 - 大约 500/500Mbit。它从未降回 100 Mbit。
再次以多用户模式启动,问题又出现了。几分钟后,NIC 会降回 100 Mbit。再次运行 speedtest 时,NIC 会在测试开始后约 2-5 秒重新协商链接至 1,000 Mbit。测试完成后约一分钟,NIC 又回到了 100 Mbit。
武装停止系统之后,我开始逐个检查系统上运行的守护进程。最后,我发现了隐藏在系统中的“小精灵”:调整
当我停下来的时候调整,问题已解决。仔细检查后,我发现我在某些时候启用了 tuned 中的最大省电选项:
$ tuned-adm --debug active
Current active profile: powersave
我想将它设置为一些不太激进的东西也会有效果,但现在我把它完全关闭了:
$ tuned-adm off
举一个实际的例子,考虑一个典型的办公室工作站。大多数时候,以太网网络接口非常不活跃。只有偶尔几封电子邮件进出,或者一些网页可能会被加载。对于这些类型的负载,网络接口不必像默认情况下那样一直全速运行。Tuned 有一个用于网络设备的监控和调优插件,可以检测到这种低活动,然后自动降低该接口的速度,通常会导致功耗降低。如果界面上的活动在较长时间内增加,例如正在下载 DVD 映像或打开带有大附件的电子邮件,tuned 会检测到这种情况,并将接口速度设置为最大在活动水平如此之高时提供最佳性能。此原理也适用于其他CPU和硬盘插件。
经验:
- 当我启用这样的功能时我真的应该记住它。
- 当守护进程像这样调整硬件时,多一点(而不是没有)冗长的内容会很好。
- 在跑去五金店之前我应该做更多的测试。
- 这并不总是内核的错误 ;-)