搭配 WDF 使用 Windows Performance Toolkit (WPT)
從 Windows 10 開始,您可以使用 Windows Performance Toolkit (WPT) 來檢視指定內核模式驅動程式架構 (KMDF) 或使用者模式驅動程式架構 (UMDF) 2 驅動程式的效能數據。
適用於 WPT 的 Windows 驅動程式架構 (WDF) 延伸模組如何協助?
您可以使用 WPT 來取得效能深入解析或針對效能問題進行疑難解答。 例如:
- 檢查驅動程式的 WDF I/O 要求完成率、CPU 使用率,以及 PnP 和電源回呼所花費的時間。
- 比較UMDF 2驅動程式與類似的KMDF驅動程式,並判斷UMDF是否符合您的效能需求。
- 識別 WDF I/O 路徑中的效能問題。
- 判斷指定回呼的實例需要很長的時間。 然後檢查取樣的CPU使用量,以瞭解原因。
- 檢查裝置是否經常進出 D0 電源狀態電源轉換。
開始使用
WPT 是 Windows 評定與部署套件 (ADK) 的一部分。 您可以從下載並安裝 Windows ADK 來安裝 ADK。
WPT 包含兩個不同的工具:Windows Performance Recorder 和 Windows 效能分析器 (WPA)。 在本主題中,我們使用WPR來記錄追蹤,然後使用WPA以可設定的 GUI 格式檢視追蹤。
若要瞭解如何使用 Windows Performance Toolkit 來測量 WDF 驅動程式的效能,請觀看下列影片,或閱讀影片下方的步驟。 影片和步驟涵蓋相同的程式。
錄製和檢視 WDF 驅動程式的事件記錄檔
如果尚未安裝驅動程式,請加以安裝。
在提升許可權的命令提示字元中,輸入下列命令。
<WdfPerfEnhancedVerifier.cmd ServiceName><UMDF 或 KMDF>
注意 WdfPerfEnhancedVerifier.cmd應該從您安裝 WPT 的位置複製。 如果您在開發電腦上安裝 WPT,您必須將文稿從 WPT 安裝目錄複製到目標電腦。
此腳本會設定指定驅動程式的登錄專案,讓架構記錄在步驟 4 中啟用 ETW 提供者時啟用效能分析所需的事件。
重新啟動電腦。
在提升許可權的命令提示字元中,輸入下列命令。
Wpr.exe -Start WdfTraceLoggingProvider -filemode
此命令會啟用 WDF 的 ETW 提供者。 計算機開始錄製追蹤。
注意 如步驟 2 所示,Wpr.exe應該從您安裝 WPT 的位置複製。 如果您在開發電腦上安裝 WPT,請將這些檔案從 WPT 安裝目錄複製到目標電腦。
在 Windows 10 傳統型版本(家用版、專業版、企業版和教育版)上,您也可以使用 Wprui.exe 啟動追蹤,以提供用於錄製追蹤的 GUI。 在 [更多選項] 下,展開 [資源分析] ,然後選取 [WDF 驅動程序活動]。
練習您感興趣的案例。
停止 ETW 追蹤會話: Wpr.exe -Stop MyPerfTrace.etl
在 Windows 效能分析器 檢視器開啟事件追蹤記錄檔:
Wpa.exe MyPerfTrace.etl
若要擷取相同驅動程式的另一個追蹤,請使用Wpr.exe來啟動和停止新的追蹤。 若要擷取不同驅動程序的追蹤,請先重新執行新驅動程式的WdfPerfEnhancedVerifier.cmd。
分析追蹤
若要開始分析驅動程式的效能,請在左側尋找 Graph 總管,開啟 [計算] 類別,然後將 UMDF 或 KMDF 圖形拖曳至 [分析] 索引卷標底下的主要工作區。這個螢幕快照顯示 [圖形總管] 窗格:
UMDF 有專用的數據表,另一個用於 KMDF 驅動程式。
UMDF I/O 要求圖形和摘要數據表
WPT 可以透過兩種方式顯示 WDF I/O 要求完成輸送量:
- 每秒完成的 I/O 要求數目
- 每個 I/O 要求的時間持續時間(格式化為甘特圖)
下列螢幕快照顯示 CPU 和 UMDF I/O 要求效能的範例摘要圖表和數據表。 在UMDF I/O要求完成率圖表中,每秒的要求數目會顯示在Y軸上。
在摘要數據表中,大部分的數據行都是自我說明的,但有幾個值得注意的事項。 WdfDevice 數據行包含與 I/O 要求相關聯的 WDFDEVICE 句柄。 ActivityID 包含 I/O 要求的唯一標識碼。 架構會在將 I/O 要求傳遞給驅動程式時建立此識別碼。 如果活動標識碼已經與對應的 IRP 相關聯,架構會使用該標識碼。 如需詳細資訊,請參閱 使用活動標識符。
進入時間是架構將要求傳遞至驅動程式時的追蹤時間戳,而結束時間則是驅動程式呼叫 WdfRequestComplete 或完成要求的相關方法時的時間戳。
KMDF I/O 要求圖表和摘要數據表
以下是類似的螢幕快照,其中顯示 KMDF 驅動程式的 I/O 要求資訊。
PnP Power 回呼圖表和摘要數據表
WPT 也可以顯示每個 PnP 和電源回呼的處理時間。 下列螢幕快照顯示 範例 KMDF 驅動程式和範例 UMDF 驅動程式的 EvtDeviceD0Entry、 EvtDeviceD0Exit 和 EvtDevicePrepareHardware 回呼持續時間。
WdfDevice 數據行包含與回呼相關聯的 WDFDEVICE 句柄。 ActivityID 包含回呼實例的唯一標識符。
會檢測哪些呼叫?
本節描述哪些事件可用來建置上面顯示的圖形和數據表。
針對特定驅動程式執行WdfPerfEnhancedVerifier.cmd之後,架構會在系統呼叫某些指定的驅動程式回呼時,以及指定的驅動程式呼叫某些架構方法時,記錄 ETL 追蹤記錄檔中的事件。
若要判斷 I/O 要求何時啟動,架構會在呼叫下列回呼時記錄事件:
當驅動程式呼叫下列方法時,架構也會記錄 I/O 要求啟動事件:
若要判斷 I/O 要求何時完成,架構會追蹤驅動程式呼叫的時間:
最後,若要判斷 PnP/Power 回呼的回呼持續時間,架構會在呼叫下列驅動程式提供的回呼例程,以及完成時記錄:
資源和疑難解答
執行WdfPerfEnhancedVerifier.cmd腳本之後,請務必重新啟動。
若要判斷驅動程式是否已設定為記錄事件記錄檔,請使用 。WdfKd.wdfdriverinfo 核心調試程序命令。 如果驅動程式已設定為效能追蹤,您會看到如下的輸出:
!WdfKd.WdfDriverInfo Echo.sys … … ---------------------------------- WDF Verifier settings for echo.sys is ON Enhanced verifier: performance analysis hooking ON ----------------------------------
僅供開發和測試之用,可以暫時停用驅動程式程式代碼簽署原則的強制執行。 如需詳細資訊,請參閱 在開發和測試期間安裝未簽署的驅動程式套件。