我需要跟踪单个用户调用的进程数量以及这些进程在给定的时间段内消耗了多少 CPU 时间(或百分比)。
诀窍在于,这些进程通常只运行一瞬间,几乎不消耗 CPU,但它们每秒被调用很多次。因此“ps -eo user,pid,pcpu,time,args”并不可靠。
最后我想要一份报告,内容如下:“用户 foobar 在过去 xx 秒内消耗了 xxx CPU-TIME/CPU%”
有人知道我该如何实现吗?操作系统是 AIX7.1,但这个问题也适用于 Linux RHEL7。
提前致谢。
答案1
在 AIX 上,您可以启用会计子系统并使用acctprc1 和 prtacct 命令显示用户的 CPU 使用情况。
答案2
理论上,您可以使用 (Linux) cgroup。您将创建自定义 cgroup,所有用户进程都将在其中运行。然后,只需观察 cgroup CPU 计时(系统和用户时间总和),您就可以根据这些值计算出选定时间段内的总 %CPU 使用率。
文件:https://www.kernel.org/doc/Documentation/cgroup-v1/cpuacct.txt