Как диагностировать rx_missed_errors?

Мигрируя от старого сервера до нового, после установки всех сервисов, я замечаю, что большое отбросило rx пакеты в моем NIC:

$ 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
8
задан 30 June 2015 в 13:28
1 ответ

Большинство драйверов меняют местами использование счетчиков 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-раковина-и-статистика-объяснить-и-лечить-сброшенные-пакеты

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

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

8
ответ дан 2 December 2019 в 23:02

Теги

Похожие вопросы