Skip to content

Windows 效能分析:WPR + WPA + xperf

以 ETW(Event Tracing for Windows)技術錄製與分析系統卡頓,精準定位 DPC/ISR 驅動延遲、CPU 熱點與磁碟 I/O 瓶頸。

概述

Windows 系統出現卡頓、滑鼠抖動、輸入延遲或畫面凍結時,找出根源需要低層次的效能追蹤工具。Windows ADK(免費)內附的 WPR + WPA + xperf 工具組,使用與作業系統核心整合的 ETW 機制,能以極低開銷錄製驅動中斷(DPC/ISR)、CPU 使用率、磁碟 I/O 等完整時序資料。

相對於 LatencyMon 免費版的功能限制(無法持續監控或匯出報告),WPR + WPA 使用相同底層技術且完全免費,適合作為長期維運的首選診斷方案。診斷流程分為三步:WPR 錄製、xperf 匯出文字報告(適合 AI 輔助分析)、WPA 圖形化視覺檢視。

實際操作中,最常見的卡頓根源是佔用 DPC 時間過長的驅動程式(特別是網卡、音效卡驅動),其次是背景行程搶佔 CPU 或磁碟 I/O 飽和。ETW trace 能精準定位到驅動模組名稱與發生時間點,大幅縮短診斷時間。

核心內容

工具角色分工

三個工具各司其職,形成完整的分析流水線:

工具角色輸出
WPR(Windows Performance Recorder)系統服務模式背景錄製 ETW 事件.etl 二進位格式
xperfCLI 後處理工具,從 .etl 批次匯出文字報告.txt 人可讀格式
WPA(Windows Performance Analyzer)圖形化互動分析,時間軸縮放與多圖疊加視覺化介面

錄製設定選擇

wpr -start GeneralProfile 是最通用的入門設定,涵蓋 CPU 採樣、DPC/ISR、磁碟 I/O、記憶體等主要面向。若已知問題屬於特定領域(如網路延遲),可改用更精細的 profile 以減少 .etl 檔案大小。錄製時間只需涵蓋卡頓重現的時間窗口,通常 10~60 秒即足夠,不需長時間錄製。

常見卡頓根源與對應分析圖表

症狀優先查看的圖表展開欄位
滑鼠卡頓 / 音訊破音DPC/ISR DurationModule(驅動名稱)
程式無回應 / CPU 飆高CPU Usage (Sampled)Process
大量讀寫操作卡住Disk I/OProcess / Filename
開機或喚醒慢CPU Usage + Disk I/O 同時Process

分析技巧:時間軸確認卡頓發生的時間點是否有明顯 spike,DPC/ISR 展開到 Module 欄即可看到驅動程式名稱,CPU Usage 展開到 Process 欄找出搶佔資源的行程。

使用 xperf 匯出報告供 AI 分析

圖形介面截圖難以系統化分析;將 .etl 匯出為文字後直接提供給 AI 可大幅加速診斷。dpcisr 分析是找出卡頓驅動的首選,cpudisk 涵蓋 CPU 與磁碟,marks 記錄使用者標記的事件點。將輸出的 .txt 內容貼入 Claude 等 AI,可直接解讀驅動名稱與時間分佈並給出改進建議。

管理員權限的必要性

WPR 需要系統服務權限才能附掛 ETW provider,在非管理員下執行會回傳 0xc5585011 錯誤。停止錄製(wpr -stop)也需要相同權限,且停止過程需 10~30 秒同步 ETW buffer;期間不可中斷,按 Ctrl+C 會觸發 0x800704c7(使用者取消)並遺失已錄製的資料,需重新錄製。

關鍵要點

  • 必須以管理員身份執行 WPR,否則出現 0xc5585011 錯誤
  • wpr -stop 等待過程不可按 Ctrl+C,需等 10~30 秒完成
  • xperf 匯出的 .txt 報告適合直接提供給 AI 進行診斷分析
  • WPA 的 DPC/ISR Duration 圖表展開 Module 欄即可定位卡頓驅動
  • wpa 指令未加入 PATH,用 Get-ChildItem 找出完整路徑再執行
  • 快速入門可先用 perfmon /report(無需管理員,60 秒出 HTML 報告)

實際應用

懷疑特定驅動造成音訊卡頓時:用 WPR 在卡頓發生時錄製 10 秒,匯出 DPC/ISR 報告後找出 Module 欄最高值的驅動名稱,更新或移除該驅動即可解決。若卡頓發生在重度磁碟讀寫期間,則改查 Disk I/O 圖表並展開 Filename 欄,找出造成 I/O 飽和的行程。

此工具組也適合作為 AI 輔助診斷的前端:xperf 匯出的文字報告可直接貼入 Claude,AI 解讀驅動名稱與時間分佈後給出具體改進建議,比人工逐行看圖更有效率。

部署設定參考

以下為實際操作時使用的完整指令,供日後查詢與複製使用。

安裝 Windows ADK

下載頁面(只勾選 Windows Performance Toolkit,其他元件不需要):

https://go.microsoft.com/fwlink/?linkid=2271337

安裝後 WPA 的常見路徑:

C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\wpa.exe

錄製指令

powershell
# 必須以管理員身份執行

# 開始錄製
wpr -start GeneralProfile

# 停止錄製並輸出 .etl(等待 10~30 秒,勿中斷)
wpr -stop C:\trace.etl

xperf 匯出指令

powershell
# 匯出 DPC/ISR 報告(找卡頓驅動,最常用)
xperf -i C:\trace.etl -o C:\trace_dpcisr.txt -a dpcisr

# 匯出 CPU 使用報告
xperf -i C:\trace.etl -o C:\trace_cpu.txt -a cpudisk

# 匯出磁碟 I/O 報告
xperf -i C:\trace.etl -o C:\trace_disk.txt -a diskio

# 一次匯出所有常用分析
xperf -i C:\trace.etl -o C:\trace_full.txt -a dpcisr -a cpudisk -a diskio -a marks

WPA 開啟指令

powershell
# 若 wpa 指令可用
wpa C:\trace.etl

# 若 wpa 未加入 PATH,用完整路徑
& "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\wpa.exe" C:\trace.etl

# 找出 wpa.exe 位置
Get-ChildItem "C:\Program Files (x86)\Windows Kits" -Recurse -Filter "wpa.exe" -ErrorAction SilentlyContinue | Select-Object FullName

WPA 重點圖表載入順序

優先順序圖表名稱路徑
⭐ 最重要DPC/ISR DurationComputation → DPC/ISR
⭐ 最重要CPU Usage (Sampled)Computation → CPU Usage (Sampled)
⭐ 最重要Disk I/OStorage → Disk I/O
次要GPU UtilizationVideo → GPU Utilization
次要MemoryMemory → Heap Allocations

常見錯誤排除

錯誤碼原因解法
0xc5585011未以管理員身份執行右鍵 PowerShell → 以系統管理員身份執行,重新執行
0x800704c7wpr -stop 等待中按了 Ctrl+C重新執行 wpr -stop C:\trace.etl 並等待完成
wpa: The term 'wpa' is not recognizedWPA 未加入 PATH用 Get-ChildItem 找出完整路徑,用 & 執行

輔助工具(Sysinternals)

工具用途取得方式
Process Explorer進階工作管理員,即時看 CPU/interrupt/DPCSysinternals(免費)
Process Monitor行程 I/O 行為監控Sysinternals(免費)
Autoruns找出拖慢開機的自啟動項目Sysinternals(免費)
RAMMap記憶體使用細節Sysinternals(免費)

perfmon 快速診斷(無需管理員)

powershell
perfmon /report

無需管理員權限,60 秒後自動產生 HTML 報告,是最快速的入門診斷方式。

相關概念

來源