如何在Linux中计算进程及其所有子进程的CPU利用率?

use*_*820 8 linux cpu-usage

我想在Linux中知道一段时间内进程和所有子进程的CPU利用率.

更具体地说,这是我的用例:

有一个进程等待用户执行程序的请求.为了执行程序,这个过程调用子进程(一次最多限制为5个),并且每个子进程执行其中一个提交的程序(假设用户一次提交了15个程序).因此,如果用户提交了15个程序,那么将运行3批5个子进程.子进程在完成程序执行后立即被终止.

我想知道在执行这15个程序期间父进程及其所有子进程的%CPU利用率.

有没有简单的方法使用top或other命令执行此操作?(或者我应该附加到父进程的任何工具.)

Ada*_*man 8

您可以/proc/PID/stat在PID是父进程的进程ID的位置找到此信息.假设父进程等待其子进程,则可以从utime,stime,cutimecstime计算总CPU使用率:

utime%lu

在用户模式下调度此进程的时间量,以时钟周期计算(除以sysconf(_SC_CLK_TCK).这包括访客时间,guest_time(运行虚拟CPU所花费的时间,见下文),以便不知道的应用程序客人时间字段中的时间不会从计算中消失.

stime%lu

在内核模式下调度此进程的时间量,以时钟周期为单位(除以sysconf(_SC_CLK_TCK)).

cutime%ld

在用户模式下安排此进程的等待子级的时间量,以时钟周期计算(除以sysconf(_SC_CLK_TCK).(另请参阅时间(2).)这包括访客时间,cguest_time(运行虚拟所花费的时间) CPU,见下文).

cstime%ld

在内核模式下调度此进程的等待子进程的时间量(以时钟周期为单位)(除以sysconf(_SC_CLK_TCK)).

有关详细信息,请参见proc(5)联机帮助页.