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

Сообщаемое использование полосы пропускания различается между iproute2 и ifconfig

У моей группы есть сервер, настроенный для изображения наших рабочих станций, использующих ТУМАН. Мне было немного любопытно посмотреть, сколько пропускной способности мы использовали. Когда я бегу ifconfig eth0, строки TX / RX читаются

RX packets:166949376 errors:0 dropped:0 overruns:0 frame:0
TX packets:350126730 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:31757576798 (29.5 GiB)  TX bytes:458006556301 (426.5 GiB)

Но когда я бегу ip -s link show eth0, эквивалентный вывод

RX: bytes  packets  errors  dropped overrun mcast   
1693647583 166958818 0       0       0       18979  
TX: bytes  packets  errors  dropped carrier collsns 
2741139294 350136238 0       0       0       0      

Что соответствует TX / RX примерно 1,8 / 2,6 ГиБ. Что вызывает расхождение между значениями, указанными iproute2 и ifconfig? Есть ли какое-то целочисленное переполнение для iproute2?

Спасибо!

Я смог найти iproute2 документация, проливающая свет на проблему.

Благодаря Джонатан Росс ответ, Я узнал, что ifconfig извлекает данные из /proc/net/dev. в iproute2 документы похоже, что счетчик пропускной способности в iproute2 «завершается, когда максимальная длина естественного типа данных в архитектуре превышена».

Очевидно, что iproute2 использует 32-битное целое число для хранения этой информации, так как это 64-битная система. После этого счетчик полосы пропускания будет равен 4 ГиБ.

Есть разные способы получения статистики трафика из системы с библиотеками или из ядра, один из которых cat /proc/net/dev. Я бы проверил этот файл для сравнения.

Слегка ОТ: видимо сбросить можно ifconfig счетчики с загружаемыми драйверами ядра сетевой карты, но без встроенных драйверов.