如何以编程方式从工作线程中获取父线程和兄弟线程的CPU利用率?

时间:2011-09-07 15:47:14

标签: c++ linux pthreads cpu-usage getrusage

我的多线程应用程序(c ++)使用pthreads。应用程序自动生成线程并按需重新使用它们,并允许线程在空闲时间过长时被取消。

我已经设置了一个“特殊线程”来捕获统计数据,以便在遇到不同场景时查看应用程序的性能。

我不能等待进程退出,知道使用了多少CPU。

尝试使用特殊线程中的这个,但结果似乎与ps&的输出不匹配。顶部:

struct rusage ru;
    double utime, stime, ttime ;

if (getrusage(RUSAGE_SELF, &ru) == -1)
    return;

utime = ru.ru_utime.tv_sec + ( ru.ru_utime.tv_usec / 1000000 ); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + ( ru.ru_stime.tv_usec / 1000000 ); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization

你可以好好修理,告诉我是否有更好的方法,或者上面的方法是正确的,我实际上错过了其他的东西?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果这是在Linux上,您可以使用特殊的/ proc文件系统来查找有关您的进程的各种有趣信息。我不是专家,但我非常确定cpu使用情况统计数据存在于某处。

答案 1 :(得分:0)

好的,我明白了!

我上面发布的代码非常正确。 我的困惑只是由不正确的观察引起的。