我想知道一个固定时间段内一个进程和所有子进程的CPU使用率。
更具体地说,这是我的用例:
有一个过程在等待用户执行程序的请求。为了执行程序,该进程调用子进程(一次最多5个),并且每个子进程执行这些已提交程序中的1个(假设用户一次提交了15个程序)。因此,如果用户提交15个程序,则将运行3批,每批5个子进程。子进程在完成程序执行后立即被杀死。
我想知道在执行这15个程序期间,父进程及其所有子进程的CPU使用率%。
有没有简单的方法可以使用top或其他命令来执行此操作?(或者我应该附加到父进程的任何工具。)
您可以/proc/PID/stat在PID是父进程的进程ID的位置找到此信息。假设父进程正在等待其子进程,则可以从 utime , stime , cutime 和 cstime 计算出CPU的总使用量:
/proc/PID/stat
utime%lu 在用户模式下已安排此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。这包括来宾时间,guest_time(运行虚拟CPU所花费的时间,请参见下文),以便应用程序不知道访客时间字段中的,不会因其计算而浪费时间。 stime%lu 在内核模式下已计划此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。 可爱%ld 该进程的等待子进程已在用户模式下安排的时间量,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。(另请参见times(2)。))包括来宾时间cguest_time(运行虚拟设备所花费的时间) CPU,请参见下文)。 cstime%ld 已在内核模式下调度了此进程的等待子进程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。
utime%lu
在用户模式下已安排此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。这包括来宾时间,guest_time(运行虚拟CPU所花费的时间,请参见下文),以便应用程序不知道访客时间字段中的,不会因其计算而浪费时间。
stime%lu
在内核模式下已计划此过程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。
可爱%ld
该进程的等待子进程已在用户模式下安排的时间量,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK)。(另请参见times(2)。))包括来宾时间cguest_time(运行虚拟设备所花费的时间) CPU,请参见下文)。
cstime%ld
已在内核模式下调度了此进程的等待子进程的时间,以时钟滴答数为单位(除以sysconf(_SC_CLK_TCK))。
有关详细信息,请参见proc(5)联机帮助页。