Как оценить загруженность сетевого интерфейса?
Я создаю приложение которое сильно загружает сетевой интерфейс. Для контроля за его перегрузкой хотелось бы как то оценивать его загруженность и при пороговых значениях применять меры. Но к сожалению я не знаю как оценить загруженность, вернее даже не знаю на какие параметры нужно смотреть и где их найти.
Ответы (3 шт):
Утилита iftop полностью закрывает мои потребности в мониторинге, можно также рассмотреть atop.
Под загруженностью интерфейса здесь, как я понимаю, имеется в виду отношение мгновенной скорости приёма/передачи к максимальной.
Статистика об использовании интерфейса находится в каталоге /sys/class/net/<interface>/statistics
.
Здесь будут интересовать:
rx_bytes - принято за всё время, байт
rx_packets - принято за всё время, пакетов
tx_bytes - отправлено за всё время, байт
tx_packets - отправлено за всё время, пакетов
Приемлемое решение:
Получить информацию о максимальной скорости интерфейса:
/sys/class/net/<interface>/speed
для интерфейсов проводных сетей- любым из способов из этого вопроса для беспроводных сетей.
Читать указанные выше файлы через фиксированный промежуток времени (например, каждую секунду), определяя среднюю скорость работы интерфейса за этот промежуток.
Загруженность интерфейса получить, поделив мгновенную скорость на максимальную.