NIC 自发在 100 和 1000 Mbit 之间切换

NIC 自发在 100 和 1000 Mbit 之间切换

我的双网卡 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

更多信息来自https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/chap-red_hat_enterprise_linux-performance_tuning_guide-tuned

举一个实际的例子,考虑一个典型的办公室工作站。大多数时候,以太网网络接口非常不活跃。只有偶尔几封电子邮件进出,或者一些网页可能会被加载。对于这些类型的负载,网络接口不必像默认情况下那样一直全速运行。Tuned 有一个用于网络设备的监控和调优插件,可以检测到这种低活动,然后自动降低该接口的速度,通常会导致功耗降低。如果界​​面上的活动在较长时间内增加,例如正在下载 DVD 映像或打开带有大附件的电子邮件,tuned 会检测到这种情况,并将接口速度设置为最大在活动水平如此之高时提供最佳性能。此原理也适用于其他CPU和硬盘插件。

经验:

  • 当我启用这样的功能时我真的应该记住它。
  • 当守护进程像这样调整硬件时,多一点(而不是没有)冗长的内容会很好。
  • 在跑去五金店之前我应该​​做更多的测试。
  • 这并不总是内核的错误 ;-)

相关内容