e1000e รีเซ็ตอแด็ปเตอร์โดยไม่คาดคิด / ตรวจพบการค้างของหน่วยฮาร์ดแวร์


36

ฉันมีเซิร์ฟเวอร์ Dell 1U พร้อม Intel (R) Xeon (R) CPU L5420 @ 2.50GHz, 8 คอร์ที่ใช้งาน Ubuntu Server Kernel เวอร์ชั่น 3.13.0-32-generic บน x86_64 มันมีการ์ดเครือข่ายคู่ 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

สิ่งใดที่ทำให้เกิดสิ่งนี้ นี่เป็นเพียงข้อบกพร่องในซอฟต์แวร์หรือปัญหาฮาร์ดแวร์จริงหรือไม่? ฉันเคยเห็นอีกหลายคนที่มีปัญหาคล้ายกัน แต่ไม่มีวิธีแก้ปัญหาที่แท้จริงและสิ่งนี้ทำให้ฉันเชื่อว่าเป็นปัญหาซอฟต์แวร์หรือไม่

บางทีใครบางคนสามารถส่องแสงบางอย่างให้ฉัน


เป็นที่ทราบกันดีว่ามีปัญหา: bugzilla.kernel.org/show_bug.cgi?id=47331
victorpablosceruelo

คำตอบ:


26

ตกลงหลังจากโพสต์คำถามนี้เมื่อคืนที่ผ่านมาฉันยังคงทำการวิจัยบางอย่างทางออกที่แท้จริงที่ฉันเจอมาดูเหมือนว่าจะได้รับการดูแลปัญหา

ปิดใช้งาน TSO, GSO และ GRO โดยใช้ ethtool:

ethtool -K eth0 gso off gro off tso off

ตามโพสต์พบที่นี่: http://ehc.ac/p/e1000/bugs/378/

จากสิ่งที่ฉันเข้าใจความประสงค์นี้หรืออาจทำให้ประสิทธิภาพลดลง

ฉันยังสังเกตเห็นวิธีแก้ไขปัญหาอื่นคือการปิดใช้งานการจัดการพลังงานที่ใช้งานอยู่

pcie_aspm=off

ตามโพสต์นี้บนเซิร์ฟเวอร์ผิดพลาด : ปัญหาLinux e1000e (ไดรเวอร์เครือข่าย Intel) มากมายฉันจะเริ่มจากที่ไหน

ฉันยังไม่ได้ลองวิธีนี้ ฉันจะลองดูว่ามันสร้างความแตกต่างและโพสต์สิ่งที่ฉันค้นพบ

แก้ไข:

ตกลงดังนั้นฉันได้ลองปิดการจัดการพลังงานแบบ Active-State, pcie_aspm = ปิดและนี่ไม่มีผลใด ๆ ฉันยังคงสังเกตเห็นข้อผิดพลาดในไฟล์บันทึกของฉัน

สิ่งนี้อาจใช้งานได้สำหรับบางคนเนื่องจาก Intel nics บางตัวมีปัญหาเกี่ยวกับเมล็ดของการนอนหลับที่แตกต่างกันเมื่อเปิดใช้งานการจัดการพลังงาน


2
ขอบคุณ! ฉันลองใช้ ethtool fix แล้วก็แก้ปัญหาได้ (ยังติดอยู่ในสคริปต์ init)
Peter

สวัสดีคุณรู้หรือไม่ว่าการใช้งานethtool -K eth0 gso off gro off tso offจะทำให้การเชื่อมต่อขาดลงแม้จะเป็นเวลาสั้น ๆ ก็ตาม
godzillante

แน่นอนว่าตัวเลือกการปิดใช้งานด้วย ethtool ช่วยการปิดการใช้งานตัวเลือกการจัดการพลังงานไม่ได้
Oleg Gryb

2
'จากการโพสต์พบที่นี่: ehc.ac/p/e1000/bugs/378 ' ตอนนี้ไปที่ domainquatter เนื้อหาต้นฉบับสามารถพบได้ที่นี่: web.archive.org/web/20160205153351/http://ehc ac: 80 / p / e1000 / …
Mike McCabe

6

การปิดใช้งาน Enhanced C1 (C1E) ใน BIOS จะแก้ไขให้ฉัน

ไม่แน่ใจว่าสถานะพลังงานต่ำของ C1E กำลังสับสนกับไดรเวอร์หรือมี oops ในไดรเวอร์เมื่อโปรเซสเซอร์อยู่ในสถานะนี้

อย่างไรก็ตามปัญหาได้รับการแก้ไข


นี่เป็นการแก้ไขที่เหมาะกับฉัน ใช้งาน Ubuntu 16.04 LTS บนเมนบอร์ด ASRock H170M-ITX / DL ขอบคุณ SteveG =)
ก้อย

โปรดทราบว่านี่อาจเพิ่มการใช้พลังงานของเซิร์ฟเวอร์เป็นจำนวนมาก!
Flatron

0

ฉันมีปัญหา (เกิดข้อผิดพลาดเคอร์เนลเดียวกันกับคุณและข้อผิดพลาด SSH userspace เช่น " Corrupted MAC on input")

วิธีการแก้

สิ่งที่ใช้ได้ผลสำหรับฉันคือปิดใช้งานการถ่ายโหลด TCP checksum:

# ethtool -K eth0 tx off rx off

การรวมสิ่งนี้ & สะอาดในระยะยาวเข้ากับ debian-ish / etc / network / interfaces :

#!/bin/bash
#
# Disables TCP offloading on all ifaces
#
# Inspired by: @Michelunik https://serverfault.com/a/422554/62953

RUN=true
case "${IF_NO_TOE,,}" in
    no|off|false|disable|disabled)
        RUN=false
    ;;
esac


# Other offloading options that could be disabled (not TCP related):
#  sg tso ufo gso gro lro rxvlan txvlan rxhash
# see man ethtool

if [ "$MODE" = start -a "$RUN" = true ]; then
  TOE_OPTIONS="rx tx"
  for TOE_OPTION in $TOE_OPTIONS; do
    /sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
  done
fi

แหล่งที่มา , แรงบันดาลใจ

บริบท

  • Debian Jessie
  • เคอร์เนล 4.7.0-0.bpo.1-amd64
  • lspci 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I218-V (rev 04)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.