Мне нужно отслеживать количество процессов, запущенных одним пользователем, и сколько процессорного времени (или%) эти процессы потребляли за заданный период времени.
Хитрость в том, что каждый из этих процессов обычно выполняется в течение доли секунды и почти не потребляет ЦП, но они вызываются много раз в секунду. Поэтому "ps -eo user, pid, pcpu, time, args" ненадежны.
В конце концов, мне нужен отчет, в котором говорилось бы что-то вроде: "пользователь foobar потребил xxx CPU-TIME / CPU% за последние xx секунд"
У кого-нибудь есть свет, как я могу этого добиться? ОС - AIX7.1, но вопрос относится и к Linux RHEL7.
Заранее спасибо.
Теоретически вы можете использовать контрольные группы (Linux). Вы создадите собственную контрольную группу, в которой будут выполняться все пользовательские процессы. Затем просто следите за счетом тиков ЦП cgroup (сумма системного и пользовательского времени), и вы сможете рассчитать общий% использования ЦП за выбранный период времени на основе этих значений.
Док: https://www.kernel.org/doc/Documentation/cgroup-v1/cpuacct.txt
В AIX вы можете включить подсистему учета и использовать комбинацию Команды acctprc1 и prtacct для отображения использования ЦП пользователем.