共用方式為


執行緒在並行視覺化工具中檢視時間表報告

本文提供有關併行視覺化工具中的執行緒檢視時間軸報告的資訊。

執行時間(執行緒視圖)

執行緒檢視時間軸中的這些區段代表執行緒在系統中的邏輯核心上主動執行工作時的執行時間。

執行緒狀態的變更是透過核心內容切換事件來偵測。 Windows 事件追蹤 (ETW) 會每毫秒擷取一次範例堆疊。 在非常短的綠色部分中,可能不會採集到樣本。 因此,某些短執行區段可能沒有顯示呼叫堆疊。

當您按一下執行區段時,並行視覺化工具會顯示最接近按一下位置的範例堆疊。 該範例堆疊的位置會以時間軸上方的黑色箭頭或插入符號顯示,且範例堆疊會顯示在 「目前」 標籤上。

若要檢視目前檢視中所有執行區段的傳統採樣分析,請在可見時間軸設定檔中按一下執行

I/O 時間 (執行緒視圖)

時間軸中的這些區段與分類為 I/O 的封鎖時間相關聯。 這表示執行緒正在等待 I/O 作業完成。 執行緒可能已在 API 中封鎖,或由 I/O 相關核心等候並行視覺化工具計為 I/O。 API (例如 CreateFile()ReadFile()和 ) WSARecv() 都屬於此群組。

記憶體管理時間

時間軸中的這些區段與分類為記憶體管理的封鎖時間相關聯。 此案例表示執行緒會遭到與記憶體管理作業相關聯的事件封鎖,例如分頁。 在此期間,執行緒被封鎖在 API 或核心狀態中,並行程視覺化工具將其計算為記憶體管理。 其中包括分頁和記憶體分配等事件。

檢查相關聯的呼叫堆疊和設定檔報告,以進一步瞭解分類為記憶體管理之區塊的根本原因。

搶先佔用時間

時間軸中的這些區段與分類為搶佔的封鎖時間相關聯。 此種類表示執行緒會因為下列其中一個原因而切換:

  • 排程器會使用較高優先順序的執行緒來取代它。

  • 執行緒的執行量已過期,其他執行程已準備好執行。

    在此期間,執行緒因核心等待原因而被封鎖,「並行視覺化工具」將此計為「搶佔」。 搶佔區段會在執行緒被移出邏輯核心時開始,並在該執行緒重新執行時結束。

    先佔區段的工具提示會顯示造成先占的處理程序或執行緒名稱。 不過,這並不表示接管的程序或執行緒實際上在整個被搶佔的時段執行。

睡眠時間

時間軸中的這些區段與分類為睡眠的封鎖時間相關聯。 睡眠類別表示執行緒已自願放棄其邏輯核心,並且沒有執行任何工作。 在此期間,執行緒已在並行視覺化工具計為睡眠的 API 中遭到封鎖。 API (例如 Sleep()SwitchToThread() ) 都屬於此群組。

同步處理時間

時間軸中的這些區段與分類為同步的封鎖時間相關聯。 當執行線程在同步處理時標示為封鎖時,會隱含下列其中一項:

  • 執行緒可能會導致呼叫已知的執行緒同步處理 API,例如 EnterCriticalSection()WaitForSingleObject()

  • API 比對演算法無法完全全面,因此某些可以對應至其他類別的 API 也可能顯示為同步處理,因為呼叫堆疊中的框架最終會到達對應至此類別的基礎核心封鎖基本類型。

    若要瞭解執行程封鎖事件的根本原因,請仔細檢查封鎖呼叫堆疊和設定檔報告。

UI 處理時間

時間軸中的這些區段與分類為 UI 處理的封鎖時間相關聯。 這表示執行緒正在泵送 Windows 訊息或執行其他使用者介面 (UI) 工作。 在此期間,執行緒已在並行視覺化工具計為 UI 處理的 API 中遭到封鎖。 API (例如 GetMessage()MsgWaitForMultipleObjects() ) 都屬於此群組。

如果未識別預先定義的封鎖 API,請檢閱呼叫堆疊和設定檔報告,以判斷延遲的根本原因。

「UI 處理」種類可協助您瞭解 GUI 應用程式的回應能力,並且在相依於 UI 回應性的應用程式中是理想的選擇。 例如,如果應用程式中的 UI 執行緒在 UI 處理程序中達到 100% 的時間,這表示應用程式可能具備高回應性。 不過,如果 UI 執行緒在其他類別中花費大量時間,請尋找根本原因,並考慮減少該執行緒上非 UI 類別的選項。