0

0

如何使用Windows性能工具包(WPT)分析系统卡顿?(高级诊断)

冰火之心

冰火之心

发布时间:2026-01-05 20:31:02

|

874人浏览过

|

来源于php中文网

原创

Windows性能工具包(WPT)可精准诊断Windows间歇性卡顿,通过ETW采集CPU调度、DPC/ISR、磁盘I/O及电源状态等毫秒级事件,并利用WPA时间线叠加分析定位驱动层或内核级根因。

如何使用windows性能工具包(wpt)分析系统卡顿?(高级诊断)

如果您在Windows系统中遇到间歇性卡顿现象,但常规任务管理器无法定位根源,则可能是驱动层、内核调度或硬件交互异常所致。Windows性能工具包(WPT)提供深度ETW事件采集与时间线分析能力,可捕获毫秒级的CPU调度、磁盘I/O延迟、DPC/ISR执行、电源状态切换等底层行为。以下是使用WPT进行高级卡顿诊断的具体操作路径:

一、安装并初始化WPT环境

WPT作为Windows SDK的一部分,需通过独立安装获取完整命令行工具集与图形分析器。安装后必须注册ETW提供程序并验证内核会话支持能力,否则后续采集将无法捕获关键内核事件。

1、访问Microsoft官网下载最新版Windows SDK,安装时勾选“Windows Performance Toolkit”组件。

2、安装完成后,以管理员身份打开命令提示符,执行cd "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit"切换至工具目录。

3、运行wpr -version确认工具可执行;若报错“无法找到wpr.exe”,需将该路径添加至系统PATH环境变量

4、执行wpr -providers列出所有可用提供程序,检查是否存在Windows KernelMicrosoft-Windows-Diagnosis-PCW条目。

二、录制高保真卡顿事件轨迹

卡顿通常持续数百毫秒至数秒,需启用低开销但高覆盖的ETW会话,聚焦于CPU调度延迟、DPC超时、磁盘队列深度及电源状态跃迁四类核心信号,避免全内核采集导致数据冗余或丢失关键窗口。

1、在卡顿发生前,以管理员权限运行命令:wpr -start GeneralProfile -start DiskIO -start CPU -start Memory -start Network -start Power -start GPU -start Audio -start Video -start XAML -start Win32k

2、复现卡顿时,保持系统处于典型负载状态(如滚动网页、播放视频、多任务切换),持续约60秒后立即执行:wpr -stop C:\wpt\trace.etl

3、若卡顿间隔较长且不可预测,改用循环缓冲模式:wpr -start GeneralProfile -fileMode CircularMB:512 -stop C:\wpt\trace.etl,确保最近512MB事件始终驻留内存。

4、录制结束后检查文件大小,正常卡顿轨迹应大于200MB;若小于50MB,说明关键提供程序未启用或采集被中断

三、使用WPA定位卡顿根本原因

Windows Performance Analyzer(WPA)通过多维度时间线叠加,将CPU占用、线程就绪延迟、磁盘等待、DPC执行时长等指标对齐至同一时间轴,可直观识别某毫秒区间内多个子系统的协同异常。

1、双击生成的.etl文件,或在WPA中选择File → Open,加载轨迹文件。

2、在Graph Explorer中展开“System Activity”,依次勾选“CPU Usage (Precise)”、“DPC/ISR Duration”、“Disk IO Graph”、“Ready Thread Count”、“Processor Power State”五个图表。

创一AI
创一AI

AI帮你写短视频脚本

下载

3、拖动时间轴至卡顿发生时段,观察各图层是否同步出现尖峰:若“DPC/ISR Duration”单次超过15ms且伴随“Ready Thread Count”骤升,则指向驱动级DPC阻塞;若“Disk IO Graph”中Avg. Queue Length持续>2且“CPU Usage”无显著上升,则表明存储瓶颈。

4、右键点击异常时间点,选择“Zoom to Selection”,然后在Details面板中筛选“Stack”列,重点关注包含ndis.sys、storport.sys、dxgkrnl.sys或nvlddmkm.sys的调用栈顶层函数

四、提取关键线程与驱动行为摘要

WPA内置的“Thread Summary”与“Driver Summary”视图可聚合统计信息,快速识别高频DPC提交者、最长ISR持有者及最高磁盘等待线程,避免人工遍历海量事件。

1、在WPA菜单栏选择View → Analysis → Thread Summary,按“DPC Time (ms)”降序排列,记录前3名线程的Process Name与Stack Trace。

2、切换至View → Analysis → Driver Summary,按“DPC Count”排序,查找DPC提交次数超过总次数5%的驱动模块名称(如xxx64.sys)。

3、对高DPC计数驱动,在Graph Explorer中右键其名称 → “Add Graph to Current View”,生成专属DPC执行时间线,确认是否呈现周期性脉冲(暗示定时器驱动异常)。

4、在Timeline中选中某次超长DPC事件,按Ctrl+Shift+D调出“Stack Walk”,若底部出现“KeDelayExecutionThread”或“ntoskrnl.exe!KiSwapContext”,表明该DPC强制引发上下文切换,属严重违规行为

五、导出诊断证据用于驱动厂商分析

向硬件厂商或驱动开发者提交问题时,需提供可复现的最小化轨迹片段及上下文无关的符号化堆栈,避免包含用户敏感路径或进程内存内容。

1、在WPA中用鼠标框选卡顿前后共5秒的时间范围,右键选择“Save Selected Range As...”,保存为新.etl文件(如hang_20240515_1422.etl)。

2、执行命令:tracerpt C:\wpt\hang_20240515_1422.etl -o C:\wpt\report.xml -of XML -lr,生成结构化XML报告。

3、运行:net helpmsg 0x80070005验证符号服务器配置;若失败,手动设置:set _NT_SYMBOL_PATH=SRV*C:\symbols*https://msdl.microsoft.com/download/symbols

4、使用wpa -import C:\wpt\hang_20240515_1422.etl -output C:\wpt\summary.html生成带堆栈符号的HTML摘要,确保摘要中显示完整的驱动版本号(如nvlddmkm.sys 31.0.15.4617)及对应调用函数名(如NvApiDpcRoutine)

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

603

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

643

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

464

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2872

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

503

2023.08.11

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

308

2023.08.31

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

422

2023.09.01

PPT动态图表制作教程大全
PPT动态图表制作教程大全

本专题整合了PPT动态图表制作相关教程,阅读专题下面的文章了解更多详细内容。

12

2026.01.07

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.8万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.4万人学习

CSS教程
CSS教程

共754课时 | 18.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号