В чем разница между rx_packets и rx_pkts_nic при использовании ethtool -S?

rx_packets намного больше, чем rx_pkts_nic . Почему это так?

Есть ли где-нибудь документ с объяснением всех полей статистики NIC?

0
задан 14 July 2019 в 20:04
1 ответ

Вывод ethtool -S зависит от драйвера. Похоже, вы используете какой-то сетевой адаптер Intel.

Вероятно, вы включили некоторую разгрузку ( GRO - Общая разгрузка приема, LRO - Большая разгрузка приема). Вы можете проверить вывод ethtool -k .

В этом случае несколько принятых пакетов (подсчитанных по rx_pkts_nic ) объединяются в один больший пакет (подсчитываются по rx_packets ). И только потом этот большой единичный пакет передается в системный сетевой стек.

К сожалению, я не знаю полной документации с подробным описанием различных счетчиков NIC. У большинства из них есть интуитивно понятные названия, но не у всех. Некоторые из них вы можете попытаться понять с помощью сообщений списка рассылки ядра Linux. Также вы можете попробовать написать в списки рассылки, чтобы узнать значение.

Обновление

Я просмотрел исходный код драйвера и нашел кое-что интересное.

  1. rx_packets ] значение счетчика получается из статистики сетевого устройства в системе, а не от оборудования. Это значение считается как сумма пакетов из всех очередей сетевых адаптеров. Это значение также включает плохие пакеты.

  2. rx_pkts_nic получено от оборудования, но также уменьшается на rx_missed значение . Похоже, это значение включает только хорошие пакеты (настоящее имя этого счетчика gprc , что означает количество полученных хороших пакетов ).

  3. Итак, если у вас есть разница между ] rx_packets и rx_pkts_nic , проверьте счетчики ошибок.

  4. Хорошая вещь для исследования счетчиков статистики сетевых карт - это команда ethtool --register-dump .

0
ответ дан 23 November 2019 в 22:59

Теги

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