e1000e 어댑터를 예기치 않게 재설정했습니다 / 하드웨어 장치 정지를 감지했습니다


36

x86_64에서 Intel (R) Xeon (R) CPU L5420 @ 2.50GHz, Ubuntu Server Kernel 버전 3.13.0-32-generic을 실행하는 8 개의 코어가있는 Dell 1U 서버가 있습니다. 듀얼 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 2016 년

답변:


26

좋아, 어제 밤 에이 질문을 게시 한 후에 나는 내가 만난 유일한 해결책이 문제를 해결 한 것으로 조사를 계속했습니다.

ethtool을 사용하여 TSO, GSO 및 GRO 비활성화

ethtool -K eth0 gso off gro off tso off

여기에있는 게시물에 따르면 : http://ehc.ac/p/e1000/bugs/378/

내가 이해 한 바에 따르면 성능이 저하되거나 발생할 수 있습니다.

또한 다른 솔루션이 Active-State Power Management를 비활성화하는 것으로 나타났습니다.

pcie_aspm=off

serverfault의이 게시물에 따르면 : Linux e1000e (Intel Networking Driver) 문제가 심각합니다. 어디서부터 시작해야합니까?

아직이 솔루션을 시도하지 않았습니다. 나는 그것을 시도하고 그것이 차이가 있는지 확인하고 내 결과를 다시 게시 할 것입니다.

편집하다:

좋아, Active-State Power Management, pcie_aspm = off를 끄려고 시도했지만 아무런 효과가 없습니다. 로그 파일에 오류가 계속 나타납니다.

일부 인텔 닉스에는 전원 관리가 활성화되어있을 때 다른 커널이 잠들지 못하는 문제가 있기 때문에 여전히 일부 기능이 작동 할 수 있습니다.


2
감사! ethtool 수정을 시도하여 문제를 해결했습니다. (또한 init 스크립트에
Peter

안녕하세요, ethtool -K eth0 gso off gro off tso off짧은 시간 동안이라도 실행 하면 연결이 끊어 질지 아십니까?
godzillante

실제로, ethtool 옵션을 비활성화해도 도움이
되었지만

2
'여기에서 찾은 게시물에 따르면 : ehc.ac/p/e1000/bugs/378 '은 이제 도메인 스쿼터로 이동하며 여기에서 원본 컨텐츠를 찾을 수 있습니다 : web.archive.org/web/20160205153351/http://ehc. ac : 80 / p / e1000 /…
Mike McCabe

6

BIOS에서 Enhanced C1 (C1E)을 비활성화하면 해결되었습니다.

C1E의 낮은 전원 상태가 드라이버와 충돌하는지 또는 프로세서가이 상태에있을 때 드라이버에 oops가 있는지 확실하지 않습니다.

어쨌든 문제가 해결되었습니다.


이것은 정확히 나를 위해 일한 수정이었습니다. ASRock H170M-ITX / DL 마더 보드에서 Ubuntu 16.04 LTS 실행 감사합니다 SteveG. =)
꼬리

이로 인해 서버의 전력 소비가 크게 증가 할 수 있습니다!
Flatron

0

문제가 있습니다 (귀하와 같은 커널 오류 및 " Corrupted MAC on input" 와 같은 사용자 공간 SSH 오류 발생 ).

해결책

나를 위해 일한 것은 TCP 체크섬 오프로드를 비활성화하는 것이 었습니다.

# 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

근원 , 영감 .

문맥

  • 데비안 제시
  • 커널 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.