e1000e Reinicie o adaptador inesperadamente / Detecte a unidade de hardware

36

Eu tenho um servidor Dell 1U com CPU Intel (R) Xeon (L) L5420 a 2,50GHz, 8 núcleos executando o Ubuntu Server Kernel versão 3.13.0-32-genérico em x86_64. Possui duas placas de rede 1000baseT. Eu o configurei para encaminhar pacotes de eth0 para eth1.

Percebi que no meu arquivo kern.log ele fica pendurado e depois descansando. Isso está acontecendo com frequência. Isso acontece a cada poucos segundos e, em seguida, talvez esteja ok por alguns minutos e depois a cada poucos segundos.

Aqui está o dump do arquivo de 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

Aqui estão as informações do ethtool:

Configurações:

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

Informações do driver:

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

O que poderia estar causando isso? Isso é apenas um bug no software ou um problema de hardware real? Eu já vi muitos outros tendo problemas semelhantes, mas nenhuma solução real e isso também me leva a acreditar que é um problema de software?

Talvez alguém possa esclarecer isso para mim?

Kyle Coots
fonte
Parece ser o problema é conhecido: bugzilla.kernel.org/show_bug.cgi?id=47331
victorpablosceruelo

Respostas:

26

Ok, então, depois de postar essa pergunta na noite passada, continuei pesquisando. A única solução real que encontrei parece ter resolvido o problema.

Desabilitando TSO, GSO e GRO usando ethtool:

ethtool -K eth0 gso off gro off tso off

De acordo com um post encontrado aqui: http://ehc.ac/p/e1000/bugs/378/

Pelo que entendi, isso causará ou poderá causar uma redução no desempenho.

Notei também que outra solução era desativar o Gerenciamento de energia do estado ativo

pcie_aspm=off

De acordo com este post na serverfault: Linux e1000e (driver de rede Intel) em abundância, por onde começar?

Ainda não tentei esta solução. Vou tentar e ver se isso faz diferença e postar de volta minhas descobertas.

EDITAR:

Ok, tentei desativar o Gerenciamento de energia no estado ativo, pcie_aspm = off e isso não teve nenhum efeito. Continuei a perceber erros no meu arquivo de log.

Isso ainda pode funcionar para alguns, pois algumas das placas de rede Intel têm problemas com diferentes núcleos de adormecer quando o gerenciamento de energia está ativado.

Kyle Coots
fonte
2
Obrigado! Eu tentei a correção ethtool e resolveu o meu problema. (também colou em um script de inicialização) #
Peter
Oi, você sabe se a execução ethtool -K eth0 gso off gro off tso offirá interromper a conexão, mesmo que por pouco tempo?
Godzillante 21/10
De fato, desabilitar as opções com o ettool ajudou, desabilitar as opções de gerenciamento de energia não
Oleg Gryb
2
'De acordo com uma publicação encontrada aqui: ehc.ac/p/e1000/bugs/378 ' acima agora vai para um domínio de domínio, o conteúdo original pode ser encontrado aqui: web.archive.org/web/20160205153351/http://ehc. ac: 80 / p / e1000 /…
Mike McCabe
6

A desativação do C1 avançado (C1E) no BIOS corrigiu isso para mim.

Não tenho certeza se o estado de energia mais baixa do C1E está interferindo no driver ou se há um oops no driver quando o processador está nesse estado.

Enfim, problema resolvido.

SteveG
fonte
Essa foi exatamente a correção que funcionou para mim. Executando o Ubuntu 16.04 LTS em uma placa-mãe ASRock H170M-ITX / DL. Obrigado SteveG. =)
Tails
lembre-se de que isso pode aumentar muito o consumo de energia dos servidores!
Flatron
0

Eu tive o problema (acionando o mesmo erro do kernel que você e os erros SSH do espaço do usuário, como " Corrupted MAC on input").

Solução

O que funcionou para mim foi desativar o descarregamento da soma de verificação TCP:

# ethtool -K eth0 tx off rx off

Integração limpa e de longo prazo disso com 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

fonte , inspiração .

Contexto

  • Debian Jessie
  • Kernel 4.7.0-0.bpo.1-amd64
  • lspci 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I218-V (rev 04)
Jocelyn delalande
fonte