2013-09-09 4 views
-1

Какой API следует использовать для получения текущего использования пропускной способности сети в Linux. Я знаю, что его можно просто сделать со сценарием, но могу ли я получить тот же эффект, используя C?Статистика скорости бит/сек NIC

ответ

2

Прочитайте /proc/net/dev дважды, измеряя время между считываниями, чтобы оценить использование полосы пропускания. Более длительные интервалы дают лучшие результаты; Я бы использовал по крайней мере одну десятую секунды, возможно, полную секунду между чтениями, для надежной оценки.

Первые две строки - это строки заголовка, за которыми следует строка на устройство. См. man 5 proc для получения дополнительной информации (самая актуальная ссылка - Linux man-pages project). Оба эти файла используют 0 0 0 0 0 0 0 300

Вот как это выглядит на моей машине:

Inter-| Receive            | Transmit 
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed 
    eth0: 159107615 116900 0 0 0  0   0   0 7258457 88350 0 0 0  0  0   0 
    lo: 367802 2282 0 0 0  0   0   0 367802 2282 0 0 0  0  0   0 

Обратите внимание, что это ядро ​​псевдо-файл, поэтому никогда не локализованы. Разработчики ядра Linux довольно строги относительно обратной совместимости, поэтому, хотя в этот псевдофайл будут добавлены новые поля, существующие поля будут оставаться такими, какими они есть.