LINUX.ORG.RU

Статистика загрузки ЦПУ пользователями в минуту

 


0

1

Пишу скрипт, который должен собирать данные по загрузке ЦПУ пользователями в течении минуты. Требуется просто возвращать результат USERNAME CPU_MIN для каждого пользователя.

Вопрос: можно ли откуда-то из /proc например извлечь готовые значения(пользователь + нагрузка ЦПУ/мин)?

Вижу такое решение: в цикле парсить вывод

$ top -b -n 1

для каждого юзера per procces суммировать значения нагрузки на проц и раз в минуту скидывать среднее арифметическое значение в файл/БД

Насколько элегантно такое решение?

★★★★
Ответ на: комментарий от vodz

Устраивает :)

Остается зациклить этот пример на минуту (например со sleep 1) чтобы вывести среднее арифметическое значение ЦПУ/мин для каждого пользователя.

Я и спрашиваю, насколько такой вариант корректен?

mutronix ★★★★
() автор топика
Ответ на: комментарий от mutronix

Остается зациклить этот пример на минуту (например со sleep 1)

Можно заюзать -d 60.00 без -n 1 у top, так как оно вываливает буфер после каждой итерации. Вопрос только в том, что понимается «в минуту». sleep - это сделать мониторинг текущей загрузки через каждую минуту.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 3)
Ответ на: комментарий от vodz

Вопрос только в том, что понимается «в минуту»

Топ пользователей по использованию ЦПУ за минуту. Т.е. скрипт должен работать близко к интерактивному режиму сбора данных по нагрузке после чего делить сумму со всех итераций на кол-во этих итераций (среднее арифметическое значение загрузки ЦПУ для каждого пользователя)

что-то типа

$ top -b -d 5 -n 12 # 12 итераций каждые 5 сек = буфер с данными за 60 сек

приведенный тобой скрипт с такими параметрами top корректно парситься не будет, но суть, думаю, ясна.

mutronix ★★★★
() автор топика
Последнее исправление: mutronix (всего исправлений: 1)

Топ будет ерунду показывать если пользователь создаёт много короткоживущих процессов. По уму нужно нужно в сторону cpu accounting смотреть, но не уверен, что это можно на баше реализовать. Да и сама идея мерять загрузку проца пользователем в % она какая-то странная с учетом того, что современные камни динамически меняют частоту от нагрузки, но с какими-то допущениями прокатит

cobold ★★★★★
()
Ответ на: комментарий от mutronix

приведенный тобой скрипт с такими параметрами top корректно парситься не будет, но суть, думаю, ясна

Такие параметры валидны, проблема в том, что список процессов берется на момент истечения времени ожидания, то есть не посчитаются процессы, которые выполнялись 4 секунды после последней итерации.

vodz ★★★★★
()
Ответ на: комментарий от cobold

Топ будет ерунду показывать если пользователь создаёт много короткоживущих процессов.

Ага, опередили.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Понятно, что результат будет не точным. Нужно хотя бы что-то близкое.

mutronix ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.