rx_packets
намного больше, чем rx_pkts_nic
. Почему это так?
Есть ли где-нибудь документ с объяснением всех полей статистики NIC?
Вывод ethtool -S
зависит от драйвера. Похоже, вы используете какой-то сетевой адаптер Intel.
Вероятно, вы включили некоторую разгрузку ( GRO
- Общая разгрузка приема, LRO
- Большая разгрузка приема). Вы можете проверить вывод ethtool -k
.
В этом случае несколько принятых пакетов (подсчитанных по rx_pkts_nic
) объединяются в один больший пакет (подсчитываются по rx_packets
). И только потом этот большой единичный пакет передается в системный сетевой стек.
К сожалению, я не знаю полной документации с подробным описанием различных счетчиков NIC. У большинства из них есть интуитивно понятные названия, но не у всех. Некоторые из них вы можете попытаться понять с помощью сообщений списка рассылки ядра Linux. Также вы можете попробовать написать в списки рассылки, чтобы узнать значение.
Я просмотрел исходный код драйвера и нашел кое-что интересное.
rx_packets
] значение счетчика получается из статистики сетевого устройства в системе, а не от оборудования. Это значение считается как сумма пакетов из всех очередей сетевых адаптеров. Это значение также включает плохие пакеты.
rx_pkts_nic
получено от оборудования, но также уменьшается на rx_missed
значение . Похоже, это значение включает только хорошие пакеты (настоящее имя этого счетчика gprc
, что означает количество полученных хороших пакетов
).
Итак, если у вас есть разница между ] rx_packets
и rx_pkts_nic
, проверьте счетчики ошибок.
Хорошая вещь для исследования счетчиков статистики сетевых карт - это команда ethtool --register-dump
.