2016-09-29 123 views
2

是否存在用於Linux和Darwin的低級系統API,獲取調度程序的「快照」,查看哪些線程在特定時間運行(活動),搶佔,等待資源,或類似?查看線程何時處於活動狀態的系統API

例如,Ubuntu的「系統監視器」有一個用於進程的「等待通道」列,有沒有辦法爲進程內的所有線程獲取類似的輸出?

我有一個多線程的排隊系統,其中作業分派給線程,可視時間線顯示作業何時開始/完成。爲了優化它,我想添加一些視覺指示,說明作業實際運行的時間(例如在一個處理器內核上),以及何時被搶佔。

回答

1

top -H顯示線程及其狀態。在its source之後的-H開關將成爲查找的一種方式。從快速查看看,功能int cmd_threads(globalstate *gstate)commands.c似乎切換設置。

更新:Procfs將該信息提供給用戶空間。 /proc/<pid>/task/<thread-id>/status給出你所需要的。這也是top也使用。這裏是我的系統的示例輸出:

$ cat /proc/418/task/448/status | grep State 
State: S (sleeping) 

該目錄下有很多更多有用的細節。

相關問題