我的多线程应用程序 (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
你能不能告诉我有没有更好的方法,或者上面是正确的方法,我实际上还遗漏了其他东西?
提前致谢。
最佳答案
如果这是在 Linux 上,您可以使用特殊的/proc 文件系统来查找有关您的进程的各种有趣信息。我不是专家,但我很确定 CPU 使用率统计数据在某处。
关于c++ - 如何以编程方式从工作线程获取父线程和兄弟线程的 CPU 利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336763/