rx_missed_errors 문제를 해결하는 방법? 떨어졌습니다. $ ifconfig eth2

모든 서비스를 설정 한 후 이전 서버에서 새 서버로 마이그레이션하면 NIC에서 rx 패킷이 크게 떨어졌습니다.

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

그러나 /sys/class/net/eth2/statistics/rx_dropped아무것도 보여주지 마십시오 :

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

그런 다음, 그 참조 rx_missed_errors:

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

문제를 해결하고 원인을 찾으려면 어떻게해야 rx_missed_errors합니까?


Ubuntu 12.04.5 LTS를 실행 중입니다.

$ 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


답변

대부분의 드라이버는 카운터의 사용을 교환 rx_missed_errors, rx_fifo_errors그리고 rx_over_errors있지만 일반적으로 이상의 패킷이 도착 카드의 FIFO 큐가 가득하기 때문에 손실 된 경우 증가 된 MPC (놓친 패킷 수) 카운터, 이러한 카운터 중 하나를 설정합니다.

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;

그래서 rx_missed_errors의 ixgbe의 MPC입니다.

인텔 웹 사이트에는 훌륭한 유추를 사용하여 MPC 하락의 원인을 설명하는 훌륭한 블로그 게시물이 있습니다. https://communities.intel.com/community/tech/wired/blog/2009/11/04/how-the-kitchen 싱크 및 통계 설명 및 처리 된 드롭 패킷

또한 NIC와 스위치 사이에 속도와 이중 불일치가 없는지 확인하십시오. 스위치가 NIC가 실제보다 빠르다고 생각하면 NIC 측면에 문제가 있습니다.

마지막으로, NIC 링 버퍼의 크기를 최대화하면 근본 원인으로 인해 버스트가 발생했을 때 성능이 저하 될 수 있습니다. 로 최대 값을 ethtool -g eth2찾은 다음로 설정할 수 있습니다 ethtool -G.