使用Windows Performance Toolkit分析程序性能

同事厚总(来自微软的专家)之前做了一个关于Windows Performance Toolkit的技术分享,引起了好几个同事都在研究学习使用Windows Performance Toolkit,我也来凑个热闹。

Windows Performance Toolkit相比之前做了一些更新,之前是用xperf来抓性能数据,然后使用xperfview来查看性能数据,win7之后,增加了一个Windows Performance Recorder(WPR)来顶替xperf抓性能数据,还提供了一个友好的UI界面工具WPRUI。xperfview以后也不维护了,顶替它的是更强大的Windows Performance Analyzer(WPA)。可以再官方的查看更详细的的说明:https://msdn.microsoft.com/en-us/library/windows/hardware/hh162945.aspx

对了,还有本叫做《Inside Windows Debugging》的书介绍xperf。

Windows Performance Recorder

WPR是基于系统内建的ETW机制来获取各种性能数据,比如cpu使用率、磁盘io、网络io等等,相比而言,我更喜欢直观WPRUI工具来抓性能,WPRUI的界面如下:

20150922170718

使用WPRUI抓性能数据的步骤很简单:

  1. 选择性能方案。一般情况下都是常规,如果你要记录启动、重启系统时的性能,就要选择对应的方案了。
  2. 选择详细程序。一般是希望性能数据越详细越好了,选择详细模式。
  3. 选择日志模式。内存模式可以连续多次保存日志,文件模式只能保存一次,一般选择文件模式就足够了。
  4. 选择性能记录。一般选择cpu使用率、磁盘I/O活动、文件I/O活动、注册表I/O活动、网络I/O活动、堆使用率等等,这个需要根据程序的实际性能瓶颈来选择。
  5. 然后启动记录性能,运行目标程序,完成后,保存对应的性能数据文件,这个往往有几百兆大小。

Windows Performance Analyzer

20150922173800

从上图来看,WPA的界面还是很复杂的。它读取WPR记录的性能数据文件,然后从UI、CPU、DPC/ISR(驱动)、存储、内存、Hard Faults、Power等多个性能维度来展现出来。

使用WPRUI抓性能数据的步骤也很简单:

  1. 加载etl性能数据文件。
  2. 配置调试符号,加载调试符号(加载调试符号时间很漫长,因为要尝试加载系统所有模块的符号)。
  3. 选择对应的数据图表分析。

本来想写一篇详细的博客来介绍如何使用WPA,发现需要准备一些好的案例,不想这么费劲了。先挖个坑吧,Orz。

相关链接:在google的ETW大神:https://randomascii.wordpress.com/category/xperf/

发表评论

电子邮件地址不会被公开。 必填项已用*标注