Я создал сервер-клиентское приложение, в котором в зависимости от загрузки процессора и условий загрузки он отправляет запрос файла пользователю.
Я использую /proc/loadavg values
для этого. Но эта утилита выдает значения, усредненные по крайней мере за 1 минуту.
Я хочу, чтобы значения усреднялись за гораздо меньшее время, например, за 1 или 5 секунд.
Как насчет парсинга вывода из mpstat
из пакета sysstat
? Вы можете получить статистику для каждого процессора и установить интервал (ниже для интервала 2 с).
Пример вывода:
$ mpstat -P ALL 2
Linux 3.5.0-19-generic (ubuntu) 11/30/2012 _x86_64_ (4 CPU)
08:34:28 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
08:34:30 AM all 1.01 0.00 1.26 0.00 0.00 0.13 0.00 0.00 97.61
08:34:30 AM 0 2.50 0.00 1.50 0.00 0.00 0.50 0.00 0.00 95.50
08:34:30 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:34:30 AM 2 1.01 0.00 3.02 0.00 0.00 0.00 0.00 0.00 95.98
08:34:30 AM 3 0.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.00
В качестве альтернативы, вы можете реализовать алгоритм самостоятельно. Взгляните здесь и здесь .
Еще один способ сделать это - отслеживать разницу в времени простоя по сравнению с другим временем использования в /proc/stat
через определенный интервал времени и рассчитывать нагрузку на основании этого. Вот дополнительная информация о /proc/stat.