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

标签 c++ linux pthreads cpu-usage getrusage

我的多线程应用程序 (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/

相关文章:

c++ - 坂本智彦的查找星期几的算法是如何工作的?

c++ - Box2d 碰撞。物体变形

c++ - 无法使用现有的子类创建窗口 (CreateWindowEx)

Android Studio 无法在 Elementary OS 中运行

linux - CentOS 7.2的apache无法卸载

c - 带线程的并行合并排序/比 Seq 慢很多/慢。归并排序。帮助

c++ - 无法从 C/C++ 程序访问环境变量

python - 在 Amazon Linux 上安装 psycopg2 时出错

c - 取消引用 ptread_create 使用的结构中的数组

c - pthread mutex 在 macOS 上无法正常工作