WPA是分析ETL文件以挖掘CPU调度、磁盘I/O延迟、内存分配及内核栈行为的核心工具,需经加载预处理、启用多维视图、配置深层堆栈、创建自定义图表及导出符号化报告五步完成高级性能分析。

如果您已采集ETW(Event Tracing for Windows)性能跟踪数据(.etl文件),但需要深入挖掘CPU调度、磁盘I/O延迟、内存分配模式或内核栈行为等低层细节,则Windows Performance Analyzer(WPA)是核心分析工具。以下是使用WPA进行高级性能分析的操作步骤:
一、加载并预处理ETL文件
WPA不直接解析原始ETL,需先通过wpa.exe加载并生成可交互的WPA数据库(.wpaprofile)。该过程完成事件解码、时间线对齐与符号解析准备,是后续所有高级视图的基础。
1、双击启动Windows Performance Analyzer(确保已安装Windows Assessment and Deployment Kit中的Windows Performance Toolkit组件)。
2、点击菜单栏File → Load Profile,选择已采集的*.etl文件(支持单文件或多文件合并加载)。
3、在弹出的“Load Profile”对话框中,勾选Enable symbol loading,并设置符号路径为本地符号缓存目录(如C:\Symbols)或Microsoft Symbol Server URL(https://msdl.microsoft.com/download/symbols)。
4、点击Open后等待进度条完成——此时WPA自动构建时间线索引与事件分组结构,未出现错误提示即表示预处理成功。
二、启用关键图形视图并配置时间轴筛选
高级分析依赖多维度叠加视图识别时序相关性,例如将CPU调度队列长度与磁盘响应时间同步观察,需手动激活隐藏视图并设置精确时间范围。
1、在左侧“Graph Explorer”窗格中,展开Generic → CPU Usage (Precise),右键选择Add Graph to Analysis View。
2、再次展开Storage → Disk I/O Activity与Memory → VirtualAlloc/VirtualFree Stacks,分别添加至同一分析视图。
3、在顶部时间轴区域,按住鼠标左键拖动选择待聚焦的时间段(如某次卡顿持续的500ms窗口),松开后所有已加载视图将自动缩放并仅显示该区间数据。
4、右键时间轴空白处,选择Set Time Range → From Selection以锁定该区间为默认分析范围。
三、使用自定义表格与堆栈采样深度分析
默认CPU采样堆栈仅展开至3层,无法定位具体函数调用链;需修改表格列定义并启用深层栈采集,才能识别Hot Path中的第三方驱动或用户态库瓶颈。
1、在分析视图中右键任意图形区域,选择Table → New Table,在弹出窗口中点击Add Columns按钮。
2、在列选择器中依次勾选:Stack、Weight (in ms)、Process Name、Thread ID,点击OK。
3、在新建表格顶部工具栏点击Stack → Set Stack Depth → 16,强制WPA解析最多16级调用栈帧。
4、点击表格左上角Refresh按钮,此时Stack列将显示完整函数调用链,可右键某一行选择Copy Stack导出至文本分析。
四、创建自定义图表识别跨组件延迟关联
系统级延迟常由多个子系统协同导致(如网络驱动触发高DPC时间,进而阻塞DISPATCH_LEVEL线程),需通过自定义图表将不同提供程序(Provider)事件映射到同一Y轴进行比对。
1、在“Graph Explorer”中右键CPU → DPC/ISR Duration,选择Add Graph to Analysis View。
2、右键同一分析视图空白处,选择Add Custom Graph,在弹出对话框中输入名称“Network Latency Correlation”。
3、在“Data Source”下拉菜单中选择Microsoft-Windows-Kernel-Network,在“Fields”中添加字段:Duration(单位ns)、InterfaceIndex、PacketSize。
4、点击OK后,该图表将与DPC/ISR图层垂直对齐,拖动时间轴可直观观察DPC峰值是否紧随网络包处理延迟升高。
五、导出符号化Callstack与生成XML报告用于离线审计
当需向开发团队提交可复现的性能问题证据时,必须导出带完整符号信息的调用栈及上下文事件元数据,避免因环境差异导致分析失真。
1、在已配置好Stack Depth为16的表格中,右键任意行,选择Export → Export Selected Rows to CSV。
2、在保存对话框中将文件类型改为XML Files (*.xml),文件名后缀手动改为.xml,点击Save。
3、打开命令提示符,切换到WPA安装目录(如C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\),执行:wpaexport -i "C:\path\to\export.xml" -o "C:\path\to\report.html" -format html。
4、生成的HTML报告包含可折叠的符号化堆栈、事件时间戳、进程/线程上下文,且所有函数名均链接至本地PDB文件位置(若符号路径配置正确)。










