Как устранить неполадки rx_missed_errors?

8

Мигрируя со старого сервера на новый, после настройки всех служб я замечаю большие пропущенные 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
cuonglm
источник
Что это за модель / модель NIC?
Герайнт Джонс
@GeraintJones: я обновил вопрос.
cuonglm
Ты следил за этим? sourceforge.net/p/e1000/bugs/383/#fb68
Герайнт Джонс
@GeraintJones: Спасибо за ссылку, я прочитал ее, но кажется, что проблема не была показана?
cuonglm
Бесплатная ассоциация здесь: Возможность несоответствия конфигурации ваших сетевых адаптеров между двумя серверами (и, следовательно, между новым сервером и сетевой инфраструктурой)? Есть ли разница в использовании ethtool для NIC на старом сервере (если это вариант)? Кроме того, есть ли разница в подключении другого порта на сетевой карте сервера или другого порта на коммутаторе, к которому он подключен? Для сравнения двух сетевых карт используйте ethtool -k eth2 (вместо -i).
Мэри

Ответы:

8

Большинство драйверов взаимозаменяют использование счетчиков rx_missed_errors, rx_fifo_errorsи rx_over_errors, но, как правило, они устанавливают один или несколько из этих счетчиков на счетчик MPC (счетчик пропущенных пакетов), который увеличивается при поступлении пакета и теряется, поскольку очередь FIFO карты заполнена.

Это случай для драйвера 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.

На веб-сайте Intel есть отличная запись в блоге, в которой рассказывается о причинах падения MPC с использованием замечательной аналогии: https://communities.intel.com/community/tech/wired/blog/2009/11/04/how-the-kitchen -sink-и-статистик объясни и лечите сброшенный-пакеты

Кроме того, убедитесь, что между вашей сетевой платой и коммутатором не совпадает скорость и дуплекс. Если ваш коммутатор считает, что ваш сетевой адаптер работает быстрее, чем он есть на самом деле, у вас будут проблемы со стороны сетевого адаптера.

И, наконец, может помочь увеличение размера кольцевого буфера вашей сетевой карты, если основной причиной станет производительность перед очередями. Вы можете найти максимальное значение с помощью, ethtool -g eth2а затем установить его с помощью ethtool -G.

Кристофер Нейлан
источник
Ссылка к настоящему времени утеряна
Theuni
И если кеш Google не работает, он находится на обратном пути: web.archive.org/web/20141220043139/https://…
claymation