Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Обновить

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

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

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

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

  4. Для исследования счетчиков статистики сетевых адаптеров хорошо ethtool --register-dump <iface> команда.