处理完成后的CPU时间

时间:2011-08-13 12:21:09

标签: linux posix cpu-usage timing

Linux中是否有一个函数可以让我看到进程完成后进程使用了​​多少CPU?我需要类似于bash“time”命令的东西。我是fork()进程,然后等待使用wait()让孩子完成。准确测量“实际”时间(fork()和exit()之间经过的实际时间)的方法,即使在子进程变成僵尸后很长时间调用wait()也是受欢迎的,但我不确定它是否是可能的。

2 个答案:

答案 0 :(得分:5)

当然,wait3wait4可以为您提供帮助。或者(更便携)您可以使用getrusage(2)

  

wait3()和wait4()系统调用类似于waitpid(2),但是   另外返回有关孩子的资源使用信息   rusage指向的结构。

示例:wait3

struct rusage usage;
wait3(&status, 0, &usage);

示例:getrusage

当然,wait3wait4只是一种便利。所以你可以使用getrusage

getrusage(RUSAGE_CHILDREN, &usage);

缺点是这会告诉您所有已终止子项使用的资源。

所以,一旦你明白了,你对rusage做了什么? struct rusage具有以下形式:

struct rusage {
    struct timeval ru_utime; /* user CPU time used */
    struct timeval ru_stime; /* system CPU time used */
    /* More. */
};

答案 1 :(得分:0)

  1. bash功能“times”报告shell及其子项使用的总用户/系统时间。遗憾的是,此功能不报告总内存,I / O等.IE:它不使用getrusage(它应该)。

  2. / usr / bin / time程序将为您提供执行时间,内存占用。所以你可以做/ usr / bin / time bash myprog.sh ...并获得所有孩子的累积时间。