1

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

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

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

尝试从特殊线程中使用它,但结果似乎与 ps & top 的输出不匹配:

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

各位高手,能否告诉我是否有更好的方法,或者上面是正确的方法,而我实际上还缺少其他东西?

提前致谢。

4

2 回答 2

0

好,我知道了!

我上面发布的代码是相当正确的。我的困惑只是由于不正确的观察造成的。

于 2011-11-17T15:02:25.567 回答
0

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

于 2011-09-30T14:49:02.890 回答