График использования ЦП для каждого пользователя на машине с 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

Другие вопросы по тегам