Como solucionar problemas de rx_missed_errors?

8

Migrando do servidor antigo para o novo, após definir todos os serviços, percebo uma grande queda de pacotes rx na minha NIC:

$ ifconfig eth2 | grep 'RX.*drop'
          RX packets:2059646370 errors:0 dropped:7142467 overruns:0 frame:0

Mas /sys/class/net/eth2/statistics/rx_droppednão mostre nada:

$ cat /sys/class/net/eth2/statistics/rx_dropped
0

Então, eu vejo isso rx_missed_errors:

$ cat /sys/class/net/eth2/statistics/rx_missed_errors
7142467

Como posso solucionar problemas e descobrir qual causa rx_missed_errors?


Estou executando o Ubuntu 12.04.5 LTS, com:

$ ethtool -i eth2
driver: ixgbe
version: 3.15.1-k
firmware-version: 0x800003e1
bus-info: 0000:07:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
cuonglm
fonte
Que marca / modelo de placa de rede é?
Geraint Jones
@GeraintJones: Eu atualizei a pergunta.
cuonglm
Você seguiu isso? sourceforge.net/p/e1000/bugs/383/#fb68
Geraint Jones
@GeraintJones: Obrigado pelo link, eu o li, mas parece que o problema não foi mostrado?
cuonglm
Associação gratuita aqui: Possibilidade de incompatibilidade de configuração para suas NICs entre os dois servidores (e, portanto, entre o novo servidor e sua infraestrutura de rede)? Alguma diferença ao executar o ethtool na NIC no servidor mais antigo (se isso for uma opção)? Além disso, existe alguma diferença ao conectar uma porta diferente na NIC no servidor ou uma porta diferente no switch ao qual está conectada? Para a comparação entre as duas NICs, use ethtool -k eth2 (em vez de -i).
Mary

Respostas:

8

A maioria dos motoristas trocar seu uso dos contadores rx_missed_errors, rx_fifo_errorse rx_over_errors, mas eles normalmente definir um ou mais desses contadores para o contador MPC (contagem de pacote perdido), que é incrementado quando um pacote chega e é perdido por causa da placa de fila FIFO está cheia.

Este é o caso do driver ixgbe:

$ grep rx_missed_errors drivers/net/ixgbe/*
drivers/net/ixgbe/ixgbe_ethtool.c:      {"rx_missed_errors", IXGBE_STAT(net_stats.rx_missed_errors)},
drivers/net/ixgbe/ixgbe_main.c: adapter->net_stats.rx_missed_errors = total_mpc;

Portanto, rx_missed_errorspara ixgbe é o MPC.

Há uma excelente postagem no blog da Intel que descreve as causas da queda do MPC usando uma ótima analogia: https://communities.intel.com/community/tech/wired/blog/2009/11/04/how-the-kitchen -sink-e-estatísticas-explique-e-trate-descartou pacotes

Além disso, verifique se não há uma incompatibilidade de velocidade e duplex entre sua NIC e o switch. Se o seu switch considerar que sua NIC é mais rápida do que realmente é, você terá problemas no lado da NIC.

Por fim, maximizar o tamanho do buffer de anel da sua NIC pode ajudar se a causa principal acabar sendo o desempenho diante de rajadas. Você pode encontrar o valor máximo com ethtool -g eth2e depois configurá-lo com ethtool -G.

Christopher Neylan
fonte
O link é ido até agora, mas o Google ainda tem em cache: webcache.googleusercontent.com/...
Theuni
E se o cache do Google não funcionar, está na máquina de recuperação
claymation