共用方式為


使用計時擷取來分析 CPU 和 GPU

計時擷取會將CPU和 GPU 分析數據結合成單一擷取,以深入分析您的應用程式。 遊戲執行時會收集該數據,而且額外負荷最小,因此您可以看到工作如何分散到 CPU 核心、GPU 提交圖形工作與 GPU 執行之間的延遲,以及檔案 IO 存取和記憶體配置發生時等等。 這也包括 透過 PixEvents 的應用程式定義事件、標記和計數器。

擷取時間

從 [連線] 檢視中,啟動或附加至您想要的程序(確保未核取與 GPU 擷取選項相關)。

視需要設定您的計時擷取選項,並在準備就緒時,按兩下 [ 開始計時擷取 ] 按鈕開始錄製。 按兩下 [ 停止計時擷取 ] (或終止您的應用程式),以結束錄製。 在短暫的處理期間之後,擷取將會開啟。

計時擷取選項

名稱 描述
擷取模式 循序:記錄開始和停止擷取之間的整個事件。
迴圈:將事件記錄到固定大小緩衝區,只儲存最後 n 秒的數據。 如需詳細資訊,請參閱此 循環計時擷取部落格文章
CPU 範例 執行範例分析以查看 CPU 花費時間的位置。 取樣率可設定。
內容交換器的呼叫堆疊 在線程切換內容時收集 callstack。
檔案存取 追蹤檔案存取。
GPU 計時 收集 GPU 工作何時啟動和停止的詳細計時資訊。
GPU 資源 收集 D3D 對象的詳細資訊 ,例如堆積和資源。 同時追蹤 GPU 落地、降級配置和配置移轉。
VirtualAlloc/VirtualFree 事件 追蹤透過 VirtualAlloc 和 VirtualFree 函式所做的配置。
HeapAlloc/HeapFree 事件 追蹤透過 HeapAlloc 和 HeapFree 函式所做的配置。
自訂配置器事件 追蹤使用 PixEvents 檢測的自訂記憶體配置器所做的配置。
頁面錯誤事件 收集在擷取執行時發生的頁面錯誤數據。 頁面錯誤會顯示在時間軸和元素詳細數據檢視中。
非標題程式的 Callstacks 擷取標題程式以外的進程呼叫堆疊(已啟動或附加至進程)。
核心映像資訊 收集資訊需要顯示核心二進位檔的呼叫堆疊。
產生 .etl 檔案,而不是 .wpix 檔案 產生的 .etl 檔案稍後可以轉換成檔案中的 .wpix 檔案 |轉換功能表。 當您向 PIX 小組回報 Bug 重現時,或如果您有其他工具來處理 ETW 數據,這個選項很有用。

程序設計擷取

您可以使用 WinPixEventRuntime 以程式設計方式擷取擷取。 如需詳細資訊,請參閱部落格文章 程序設計擷取

CPU 分析

取得 擷取時啟用 [CPU 範例 ] 選項,可協助您找出應用程式熱路徑中的緩慢函式,以及找出與線程等候和內容切換相關的問題。 您也可以追蹤不同類型的配置(啟用適當的擷取選項)。

有數篇部落格文章詳細涵蓋這些功能:

GPU 分析

您的應用程式是否遇到間歇性畫面中斷? 過度使用VRAM? 系統記憶體與 VRAM 之間的非預期的分頁作業? PIX 中的 GPU 分析功能可協助您了解這些常見且難以分析的情況。

GPU 計時

在擷取擷取以收集 GPU 工作的計時數據時,啟用 GPU 計時選項。 在 [時程表] 檢視中,您可以找到每個 GPU 佇列的通道(在 Lane Selector 中,您可以使用 API 佇列釘選組態快速釘選這些通道)。 這些車道包含數個子蘭:

  • PIX 事件 (GPU):GPU 工作的階層式應用程式定義區域。 請參閱 PixEvents
  • GPU 執行:執行會對應至 API 層級的工作提交;例如,透過 ExecuteCommandLists。
  • GPU 工作:GPU 上發生的任何工作;例如,Draws、Dispatches、Copies。
  • PIX 標記 (GPU):應用程式定義的標記。 請參閱 PixEvents

當您在車道中選取事件時,您會看到箭號顯示事件產生所在 CPU 的位置。 車道選項功能表中也有各種視覺效果選項(車道名稱旁的齒輪圖示)。 最值得注意的是, 預設會啟用 Flatten EventsFlatten GPU Work 選項來保留空間,但您可能會想要在跳入特定畫面時看到完整的 PIX 事件階層或 GPU 工作剖析。

該資料也可透過 [範圍詳細數據] 檢視表格式來取得,方法是選取 [要顯示的專案] 下拉式清單中的相關類別

在 API 佇列通道中檢視未擴充的 PIX GPU 事件和 GPU 工作,並顯示哪個 CPU 線程提交 GPU 工作的箭號

簡報和顯示資訊

Vsync 會顯示為個別監視器通道中的標記,而且可以在 [其他] 類別的 [範圍詳細數據] 檢視中找到

GPU 記憶體和 Direct3D 物件

擷取擷取以收集 Direct3D 對象的相關信息時,啟用 GPU 資源選項。 若要繪製整體記憶體使用量的圖表,您可以在 [計量] 檢視中找到數個計數器。 您可以設定各種預算行,以快速瞭解您是否符合記憶體使用量目標。 當您找到感興趣的區域時,您可以選取時間範圍、單擊滑鼠右鍵操作選單中的 [縮放時程表] 檢視來選取 [範圍],然後將 [選取的時間範圍] 下拉式清單設定[選取可見範圍] 來進一步調查。

在計量檢視中檢視 D3D API 物件記憶體使用量

提示

將線條樣式設定Square 可讓您更輕鬆地查看配置的位置。

[範圍詳細數據 ] 檢視中,您可以檢視 Direct3D API 對象的各種資訊,例如堆積、資源和管線狀態物件。 為了更輕鬆地找出任何可疑的物件,該資訊會在配置和釋放時分組。

在 [範圍詳細數據] 檢視中檢視 D3D API 物件

居住

如需落地相關問題,請參閱 [範圍詳細數據] 檢視的 [居住作業]、[降級配置] 和 [配置移轉] 類別。 這些標記和事件也會顯示在 住宅運營 車道上。

居住作業包括MakeResident和收回作業(透過 Direct3D 12 API 起始),以及任何 PageIn 和 PageOut 作業(如需詳細資訊,請參閱 落地)。 當圖形核心 (DXGK) 無法在您的 GPU VRAM 中配置資源時,就會發生降級配置(因為記憶體壓力或分散)。 如果發生這種情況,DXGK 也會嘗試針對那些降級的配置執行配置移轉。 請注意,這些移轉是昂貴的作業,因為它們需要暫停 GPU。

檢視配置移轉

GPU 使用率和簡報計數器

在擷取擷取以收集系統監視器中存在的計數器時,啟用擷取 SysMon 計數器選項,其中包含與 GPU 效能相關的各種計數器。 值得注意的是,有下列計數器:

  • 針對目標進程和所有進程,GPU 引擎會細分 GPU 使用率。
  • 簡報數據,例如每秒的畫面格(以毫秒為單位,以毫秒為單位,MsBetweenPresents) 和 MsUntilRenderComplete (目前開始時間與 GPU 工作完成之間的時間)。
  • GPU 記憶體資訊,包括本機和非本機記憶體使用量、居住和預算。

在 [計量] 檢視中檢視每秒畫面格和 GPU 使用率

提示

將滑鼠停留在系統監視器中的計數器名稱上,以取得描述。

這些計數器也可以在擷取時間時即時監視,或按兩下 [系統監視器] 檢視中的 [啟動計數器集合] 按鈕。 圖表可以重新排列,而且可以動態新增或移除計數器。 按兩下 [ 計數器] 以檢視所有可用的計數器。

檢視系統監視器圖表和計數器

Win32 file-I/O

請參閱在計時擷取中分析 Win32 檔案 IO 效能的部落格文章

其他分析功能

  • 統計比較有助於判斷 PIX 事件階層的哪些部分在統計上有不同的持續時間,以統計方式比較一組點。 如需詳細資訊,請參閱部落格文章 計時擷取統計比較功能
  • 設定效能預算可協助您快速識別擷取有問題的區域。 如需詳細資訊,請參閱計時擷取計量檢視中使用效能預算的部落格文章
  • 另請參閱部落格文章 計時擷取中的重大路徑分析。