Networking

e1000e 意外重置適配器/檢測到硬體單元掛起

  • January 29, 2022

我有一台戴爾 1U 伺服器,配備 Intel(R) Xeon(R) CPU L5420 @ 2.50GHz,8 個核心,在 x86_64 上執行 Ubuntu 伺服器核心版本 3.13.0-32-generic。它有雙 1000baseT 網卡。我將其設置為將數據包從 eth0 轉發到 eth1。

我注意到在我的 kern.log 文件中它一直掛起然後休息。這種情況經常發生。這種情況每隔幾秒鐘發生一次,然後可能幾分鐘就可以了,然後每隔幾秒鐘就會恢復一次。

這是日誌文件轉儲:

[118943.768245] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
[118943.768245]   TDH                  <45>
[118943.768245]   TDT                  <50>
[118943.768245]   next_to_use          <50>
[118943.768245]   next_to_clean        <43>
[118943.768245] buffer_info[next_to_clean]:
[118943.768245]   time_stamp           <101c48d04>
[118943.768245]   next_to_watch        <45>
[118943.768245]   jiffies              <101c4970f>
[118943.768245]   next_to_watch.status <0>
[118943.768245] MAC Status             <80283>
[118943.768245] PHY Status             <792d>
[118943.768245] PHY 1000BASE-T Status  <7800>
[118943.768245] PHY Extended Status    <3000>
[118943.768245] PCI Status             <10>
[118944.780015] e1000e 0000:00:19.0 eth0: Reset adapter unexpectedly

這是來自 ethtool 的資訊:

設置:

Settings for eth0:

Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full 
                       100baseT/Half 100baseT/Full 
                       1000baseT/Full 
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full 
                       100baseT/Half 100baseT/Full 
                       1000baseT/Full 
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
              drv probe link
Link detected: yes

司機資訊:

ethtool -i eth0

driver: e1000e
version: 2.3.2-k
firmware-version: 1.4-0
bus-info: 0000:00:19.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

這可能是什麼原因造成的?這只是軟體中的錯誤還是實際的硬體問題?我見過許多其他有類似問題但沒有真正解決方案的人,這也讓我相信這是一個軟體問題?

也許有人可以為我闡明這一點?

好的,所以在昨晚發布這個問題後,我繼續做一些研究,我遇到的唯一真正的解決方案似乎已經解決了這個問題。

使用 ethtool 禁用 TSO、GSO 和 GRO:

ethtool -K eth0 gso off gro off tso off

根據在這裡找到的文章:http: //ehc.ac/p/e1000/bugs/378/

據我了解,這將或可能導致性能下降。

我還注意到另一個解決方案是禁用活動狀態電源管理

pcie_aspm=off

根據 serverfault 上的這篇文章:Linux e1000e(英特爾網路驅動程序)問題很多,我從哪裡開始?

我還沒有嘗試過這個解決方案。我會嘗試一下,看看是否會有所作為,然後發回我的發現。

編輯:

好的,所以我嘗試關閉活動狀態電源管理, pcie_aspm=off 但這沒有任何效果。我繼續注意到我的日誌文件中的錯誤。

這可能對某些人仍然有效,因為某些英特爾網卡在啟用電源管理時會出現不同核心入睡的問題。

引用自:https://serverfault.com/questions/616485