2012-10-03 80 views
3

我正在使用Apple Instruments工具對多線程應用程序進行一些分析,這些工具給出了很多我想要了解的信息。我試圖找到一個很好的資源來描述在工具中用顏色編碼的線程狀態。我一直在研究XNU內核文檔和書籍,但沒有多少運氣。XNU Thread States在Xcode/Instruments中使用顏色編碼

對應於「搶先」和「主管」模式的黃色和紫色很多(全色圖在附圖中右上角描述)。鑑於我在這些國家花費了很多時間而不是「跑步」狀態(藍色),我會特別感興趣的是瞭解他們所指的是什麼,以及是否有可能/希望儘量減少在這些狀態中花費的時間。

enter image description here

回答

3

優先搶佔=你的線程可運行,並且準備,願意並且能夠執行,但被踢出來(上下文切換)有利於其他線程的。這意味着你的線程沒有在I/O或事件上休眠,而且實際上是在做一些CPU密集型的事情。但是,由於量子到期或其他優先級較高的線程,它被迫退出CPU。主管=你的線程處於內核模式。通常,這意味着內核正在處理由您的線程進行的系統調用。

他們都不是嚴格的不好,但是:

避免搶佔:沒有多少,你可以在這裏做,除了你的優先級遊戲 - 使用負nice值增加你的優先級,或者直接使用setpriority API 。您也可以使用調度策略來提高線程的偏好,並且哄騙Mach調度程序(線程的底層決策者)首先放置線程,併爲它們提供更多的CPU時間。

避免管理員模式:您可能在系統調用中很沉重。再次,這不一定是壞事。

希望這有助於

TG