График использования ЦП для каждого пользователя на машине с Linux
Я хочу построить график (графический вывод был бы отличным, то есть файл.png) в следующей ситуации: у меня есть пользователи A, B и C. Я ограничиваю их ресурсы так, чтобы, когда все пользователи одновременно запускали задачу с интенсивным использованием ЦП, эти процессы будут использовать 25%, 25% и 50% процессорного времени. Я знаю, что могу получить статистику в реальном времени, используя top
но понятия не имею, что с ними делать. Я искал через огромный top
man-страницу, но не очень много о теме вывода данных, которые могут быть получены. В идеале график должен показывать промежуток около 30 секунд. Есть идеи как этого добиться?
4 ответа
Я знаю, что могу получать статистику в реальном времени, используя top, но не знаю, что с ними делать
Пакетный режим может быть полезен:
-b : Batch mode operation
Starts top in ’Batch mode’, which could be useful for sending output from top to other programs or
to a file. In this mode, top will not accept input and runs until the iterations limit you’ve set
with the ’-n’ command-line option or until killed.
Например:
$ top -b -n 1 -u <user> | awk 'NR > 7 { sum += $9 } END { print sum }'
Ganglia Gmetric может быть использован для построения графика для этого.
cpu_per_user_gmetric.sh
#!/bin/bash
USERS="a b c"
for user in $USERS; do
/usr/bin/gmetric --name CPU_per_"$user"_user --value `top -b -n 1 -u $user | awk 'NR>7 { sum += $9; } END { print sum; }'` --type uint8 --unit Percent
done
crontab -l
* * * * * /path/to/cpu_per_user_gmetric.sh
и вот результат:
tload
Команда представляет графическое представление средней загрузки системы через график ASCII. Эта команда может использоваться для отображения графика на терминале. Синтаксис команды:
tload [options] [terminal]
Если терминал не указан в качестве аргумента этой команды, то по умолчанию он выводит график текущего терминала. Итак, простейшие формы этой команды:
$ tload
Возможно, вы могли бы использовать collectd
и адаптировать один из доступных плагинов? Да, ни один из перечисленных не будет делать именно то, что вы хотите, но с другой стороны, их довольно просто изменить, и я думаю, вы могли бы начать, например, с processes
плагин и начать работать оттуда.
Пытаться sar
а также sadf
собрать и подготовить данные для удобного построения графиков. http://sebastien.godard.pagesperso-orange.fr/documentation.html