前言
在计算机使用过程中,常有人会问:为什么我的CPU利用率接近100%?为什么可用内存不断减少?
幸运的是,Windows性能工具包为我们提供了帮助。是什么应用程序的锅,我们使用该性能工具一探究竟。
一、 Windows性能工具包简介
(1) Windows性能工具包(Windows Performance Toolkit,简称WPT)有两个主要组件:Windows Performance Recorder(WPR)和Windows Performance Analyzer(WPA);
(2) WPR用来追踪CPU使用率、磁盘I/O、文件、网络、GPU活动、电源使用情况等,借助ETW技术框架实现,将以上信息保存在ETL文件中;
(3) WPA辅助WPR使用,用来可视化分析ETL文件,从而确定系统性能瓶颈。
二、Windows性能工具包安装
2.1 下载
下载安装Windows ADK得到 Windows 性能工具包 (WPT),/en-us/archive/blogs/pigscanfly/xperf-a-new-tool-in-the-windows-sdk
2.2 安装
(1) 默认安装路径:C:\Program Files (x86)\Windows Kits\8.1\WindowsPerformance Toolkit
(2) 安装文件:
(3) 文件简介
wpa.exe —解析ETL文件,并图形化、表格化展示。
wpaexporter.exe —导出ETL文件的解析结果成文本格式。
wpr.exe —记录ETW产生的数据,命令行模式。
WPRUI.exe —记录ETW产生的数据,图形化界面,更友好。
xperf.exe —早期版本WPT的核心组件,所以现在习惯将WPT称为XPerf。XPerf的功能类似于wpr+wpaexporter,可以记录ETW产生的数据,也可以导出结果到文本。
xperfview.exe —早期版本WPT中的分析工具,功能和现在的WPA一样,WPT从版本8以后已经没有这个exe了。在WinXP上只能使用旧版的XPerf,而且建议用对应的xperfview打开分析。
三、Windows性能工具包工作原理
3.1 WPR工作原理——ETW技术框架
CONTROLLERS:启动和停止Events发送,以及log路径和大小设置,以及Provider的选择允许;WPR就是一个Controllers,它会使用StartTrace等API来开启信息追踪。
PROVIDERS:不同类型的Event产生者。例如线程、网络、I/O、CPU、内存等各种Provider,它会使用WriteEvent来记录信息。
CONSUMERS:已产生Event的使用者;WPA就是使用者,用来做可视化分析,它会解析logfile以获取结果。
3.2 WPA工作原理——DataTable
Key area:用这一组维度数据作为统计关键字,通常需要正确搭配,例如Process可以搭配Thread。
Data area:数据统计区,这里可以是消耗时间costtime、次数等。
Graphing element area:绘制区,这里可以是时间间隔duringtime、权重占比Weight等。
四、Windows性能工具实例分析
4.1 WPR追踪获取信息
4.1.1 WPR命令简介
WPR的使用是通过命令行的形式来完成的。常见的命令如下:
-start [SessionName]:需要启动的Session Name,只记录kernel logging的话Name可以为空-on Flags|Groups:指定需要开启的provider flags or groups,通过加号(+)分隔 -f filename:指定写入的文件名字,Kernel trace默认是Kernel.etl, user trace默认是User.etl -maxfile Size:限定日志文件的大小,单位MB -filemode Mode:指定文件写入模式,默认是"Sequential",还有"Circular", “Append”,“NewFile”-stackwalk flags|@file:开启call stack的记录
4.1.2 生成ETL文件
使用xperf-on DiagEasy开始收集系统性能信息;
使用xperf -d test.etl停止收集并将收集到的信息保存到etl文件中。
4.2 WPA分析获取结果
4.2.1 WPA分析界面简介
整体界面展示
双击生成的etl文件,可以看到WAP分析工具有6部分内容,分别是图像分析区(GraphExplorer)、时间轴、诊断输出台(Diagnostics Console)、分析区(Analysis)、详细资料展示区(Details)及顶部工具栏,如下图:
图像展示区(GraphExplorer)
图像分析区主要是结果的管理区,可以看到每个项目有对应的下拉小三角,点击小三角,我们就可以看到每个项目下具体的结果展示。
System Activity:系统活动,里面主要是进程线程的生命周期,原始事件等等内容;
Computation:记录了CPU的各项活动;
Storage:记录了磁盘的活动和文件的操作;
Memory:记录了系统内存的变化。
分析区(Analysis)
分析区主要展示了具体的分析结果,包括主要的Series(进程序列)、性能折线图、具体各项分析的tab表。以CPU为例,双击CPU,就可以得到分析结果。
时间轴
时间轴是和Analysis相关联的,展示的是分析性能的时间line。一般情况下只显示一个时间轴,如果有多个不同时间段的Analysis,则会展示多个时间轴。
诊断输出台(DiagnosticsConsole)
和一般的控制台类似,主要是输出一些错误信息与log。
顶部工具栏
顶部工具栏主要是打开文件(File)、跟踪调试(Trace)、窗口创建(Window)及帮助(Help)。常用的为跟踪调试中配置加载符号文件(Symbol)。
4.2.2 WPA分析性能结果
分析性能结果主要是第一部分介绍的图像分析区(Graph Explorer)和分析区(Analysis),以CPU为例进行分析。
STEP-1:展开Graph Explorer的Computation,双击CPU,可以看到如下图:
STEP-2:选择不同的展现形式
如果要看进程的CPU信息,则标签序列、底部tab都是以进程展示的,下拉选择最后一项:
如果要看每个CPU处理器的信息,则选择倒数第二项:
展开可看到每个CPU下的不同的进程信息:
STEP-3:选择好具体要展现的形式之后,我们选择需要的图表展示
默认选择的是折线图,可以更改其他类型的图表展示方式,具体视情况而定 :
STEP-4:选择需要展示的内容
在Analysis分析区,我们可以选择展示的内容,比如只想看图表变化图、tab分析表和图表变化图、只看tab分析表等,如下图:
注:一般建议使用图形加tab表,可以帮助更好的分析结果。
STEP-5:分析结果
以SogouExplorer.exe为例,我们想看在统计周期内的CPU变化情况,就可以找到对应的标签颜色,分析折线图,如下图:
我们想看在统计周期内,进程总共占用多少资源,可以在tab表中找到是SogouExplorer.exe进程的,将所有的CPU资源占用情况求和:
五、踩过的坑
WPR的启动、配置、解析有很多参数,不是很容易上手,这里说下几个踩过的坑。
(1) 版本问题
目前能下载到的版本有4.8 /6.3 /10.0,这几个版本的兼容性并不是很好,生成ETL文件后,一定注意要用同版本的WPR、WPA或是XPerfView去分析,用不同版本的话会有一些奇怪的问题,例如打开报错、看不到关键数据、闪退等。
(2) 工具兼容性问题
如果你正在使用ProcessMonitor或ProcessExplorer,需要先关闭它们再启动WPR,否则会报错,因为这两个工具也会通过ETW收集信息。
(3) 参数问题
WPR的启动参数很多,开的越多带来的额外系统开销也越多,ETL文件也越大。所以一定要按需配置,有针对性的开启需要的Provider。
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。
领取关 w/x/g/z/h:软件测试小dao
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。