wpa分析需先加载符号并联动多视图定位瓶颈:勾选enable symbol loading指定符号路径,叠加cpu、磁盘、内存视图锁定异常时间窗,通过堆栈表展开调用链,导出.tsv或用wpaexporter批量输出可验证证据。
wpa 不是看一眼就能下结论的工具,它需要你带着明确问题去“挖”——比如“为什么某次操作卡顿3秒?”“哪个驱动在偷偷吃cpu?”“磁盘延迟是否真来自硬件?”。关键不在打开多少图表,而在用对视图、设准范围、读懂堆栈。
先让ETL数据真正“活”起来
加载.etl文件只是开始。WPA默认不加载符号,所有函数名显示为地址(如0x7ff…),根本没法定位问题。必须在Load Profile对话框中勾选Enable symbol loading,并指定符号路径:
- 本地缓存:填入C:\Symbols(提前用symchk或WPRUI下载好)
- 在线回溯:粘贴https://msdl.microsoft.com/download/symbols,首次解析稍慢但省空间
- 云服务器场景:若分析阿里云/AWS实例的ETL,建议额外添加云厂商提供的内核模块符号(如aws-nvme.sys),否则驱动层堆栈会中断
把CPU、磁盘、内存行为“叠在一起看”
孤立看CPU使用率没意义。真正的瓶颈常藏在时间轴上的微小重合点——比如CPU调度队列刚拉高时,磁盘CompletionTime恰好跳升,同时内存HardFaults/sec同步飙升。这就需要多视图联动:
- 在Graph Explorer中依次添加:CPU Usage (Precise)、Disk I/O Activity、Hard Faults/sec
- 用鼠标拖选一个200–500ms的异常窗口(例如任务管理器里看到的一次卡顿),松手后所有视图自动缩放对齐
- 右键时间轴 → Set Time Range → From Selection,锁定该片段,避免后续误滑出范围
深挖调用链:不止看“谁在跑”,要看“怎么跑出来的”
默认CPU采样堆栈只展开3层,往往停在ntoskrnl.exe或win32kbase.sys,看不到上层应用或驱动的真实入口。要定位Hot Path:
- 右键任一CPU图表 → Table → New Table
- 点击Add Columns,务必勾选:Stack、Weight (in ms)、Process Name、Thread ID
- 在Stack列中双击任意函数名,WPA会自动展开完整调用链(支持向下钻取至第三方驱动或.NET JIT代码)
- 若堆栈顶部频繁出现unknown,说明对应模块缺失符号——不是WPA问题,是符号路径没配对或PDB未部署
导出可验证的证据,不是截图了事
给同事或云服务商提交分析结果时,截图图表容易丢失上下文。WPA支持结构化导出:
- 在表格视图中,右键 → Save Table As… → 保存为.tsv(制表符分隔),Excel可直接打开并排序筛选
- 重点导出:Top Stacks by Weight(按耗时排序的完整调用链)、Disk I/O by File(识别具体被刷爆的是哪个日志或数据库文件)
- 用wpaexporter.exe命令行批量处理多个ETL:wpaexporter -i trace.etl -o report.csv -table "CPU Usage",适合CI/CD流水线集成











