2013-02-19 74 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