你要如何配置一个应用的程序性能数据?它如何支出时间?调用什么函数?它完成工作是否高效?这些问题都在你的脑子盘旋了很久,这里你将会找到答案。 微软最近发布的PerfView能够收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这些程序通过调用哪个函数识别频率。迄今为止,这个工具还只有微软内部的开发者使用,这些开发者负责确保操作系统组成部分的最佳操作。 除了配置程序性能数据(Perfmon、PAL和Xperf等工具不能轻松完成),PerfView还能分析程序内存堆来帮助确定内存的运用是否高效。
它还有一个Diff功能,可以让你确定跟踪间的任意差别来帮助你认出所有逆行。最后,该工具……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
![TechTarget微信公众号二维码](/wp-content/uploads/res/images/spriteimg/ttweixin.jpg)
TechTarget
官方微博
![TechTarget中国官方微博二维码](/wp-content/uploads/res/images/spriteimg/ttweibo.jpg)
TechTarget中国
你要如何配置一个应用的程序性能数据?它如何支出时间?调用什么函数?它完成工作是否高效?这些问题都在你的脑子盘旋了很久,这里你将会找到答案。
微软最近发布的PerfView能够收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这些程序通过调用哪个函数识别频率。迄今为止,这个工具还只有微软内部的开发者使用,这些开发者负责确保操作系统组成部分的最佳操作。
除了配置程序性能数据(Perfmon、PAL和Xperf等工具不能轻松完成),PerfView还能分析程序内存堆来帮助确定内存的运用是否高效。它还有一个Diff功能,可以让你确定跟踪间的任意差别来帮助你认出所有逆行。最后,该工具还有一个Dump功能可以生成一个程序内存转储。
安装PerfView
PerfView的1.0版本包括一个zip压缩文件,其中只有一个可执行的文件perfview.exe,这简化了安装。你可以将这个文件复制到多个你想跟踪的服务器上,然后在这些服务器或你本地的工作站中分析数据。PerfView在Windows Vista、Windows 7、Windows Server 2008和Windows Server 2008 R2上都受到支持。
收集配置数据
PerfView利用Windows事件追踪,而ETW从Windows 2000 Server以来就一直内置于操作系统中。只是最近才有XPerf和PerfView一类的工具利用ETW数据来解决性能问题。
事件数据被收集到一个事件跟踪日志(ETL)中。根据你想要跟踪事件的数量和时间的长度,ETL文件可能会非常大。你可以限制这个日志文件的大小,如果空间受限或者你不知道问题何时发生的话,你还可以让它们循环。默认每毫秒一次的采样间隔在收集时间内产生了大概百分之十的CPU开支。建议大概5000个样本(5秒)用于一次代表性配置采样。
开始一次数据收集有两种方式,用运行命令启动一个程序或者用收集命令在计算机范围内收集数据。这些命令可以由收集下拉菜单下的GUI引发,或者从CLI或脚本中执行“PerfView run”或“PerfView collect”命令。图1显示运行命令tutorial.exe时收集数据的过程,tutorial.exe是一个内置的训练练习。
图1:PerfView收集进行中
查看结果
一旦你在些之间针对性能问题收集了数据,你可以用PerfView分析ETL文件。该ETL文件会出现在左边的窗口,有收集日志或运行命令期间你提供的名字。通过双击该RTL文件,十来个独立的节点会和指代它们内容的名字一起出现。例如,你会在图2中看到跟踪信息、程序、事件、CPU堆栈。双击各个节点,适当的查看器会打开这些内容。
图2:PerfView数据结果
为了针对一个特定程序分析计算密集型性能问题,你将需要学习要调用的堆栈和函数。这可以通过双击左侧窗口中的“CPU堆栈”节点完成。接着你会得到提示来选择你感兴趣的程序。最后,该CPU堆栈查看器会在独立的窗口中打开,如图3所示,你可以确定调用了哪个函数以及它们的频率。
图3:CPU堆栈查看器
正如你在例子中看到的,函数System.DateTime.get_Now()正在执行87%的时间。因此,要得到最大的实惠,你会想要关注在这个模块调用的时间数量或是模块内优化的代码上。虽然这只是一个例子,但这个工具的确可以帮助你识别行为不当的应用和它们浪费时间的地方。
如果你仔细查看上面的例子,你会发现第二行显示<<ntdll!?>>。“!?”代表PerfView不能解析这个模块名称。你可以双击这个未知模块名称并选择“查找符号”来显示该模块名称。按用户指南所述配置符号路径对于解析操作系统函数名称也许是有必要的。
PerfView是一个便于用户的工具,可以用来收集和分析ETW数据用于解决配置程序性能数据的问题。这个工具可以快速地显示为这个程序执行的操作系统函数,了解性能问题可能潜藏的位置。
相关推荐
-
如何使用Windows追事件踪工具?
上篇文章中,我们已经进行了Windows事件追踪工具的入门知识普及,了解了这个工具是什么,那么我们又该如何使用它呢?接下来,我们就将为您解答心中的疑惑。
-
Windows事件追踪:新视角看老工具
虽然大多数Windows开发者都知道Windows事件追踪(ETW)是一个日志记录和事件追踪工具,但是许多管理员却从没听说过它。