2013-02-19 69 views
2

如何在Linux上运行的OpenMP(C)代码中识别出团队的空闲线程?
我想测量作为一个团队工作的线程的空闲时间。可能吗?是否有任何字段显示线程的状态?OpenMP(C)空闲线程的状态

+0

只需获得(仍然)免费的Oracle Solaris Studio(尽管它的名称也包含Linux版本)。它包括线程分析器工具,它能够收集线程利用率信息并将其呈现在一个漂亮的GUI中。 – 2013-02-20 11:15:52

回答

1

阅读Status领域/proc/self/task/$tid/status其中tidgettid()系统调用

这也为第三场获得您的任务ID(唯一的每个线程)在/proc/self/task/$tid/stat

/proc/self/task/$tid/stat还将包含utimestime领域为每个任务,所以你可以得到他们的“活跃时间”。检查http://linux.die.net/man/5/proc以查看哪些字段是。

+0

谢谢!有没有办法将omp_get_thread_num()与gettid()结果相对应? – 2013-02-20 00:41:50

+1

恐怕不是。 'omp_get_thread_num()'是特定于进程的,通常从0开始计数。而'gettid()'是内核'pid_t'。它本质上与进程ID PID相同,只是更具体而且实际上进程内主任务/线程的TID与进程PID相同。您需要从每个线程调用'gettid()'来确定它们的ID或枚举目录'/ proc/self/task'。 – 2013-02-21 11:44:39