这里是普通文章模块栏目内容页
微软Xperf使用手册:监控Windows性能新方案

IT管理员总是在不停地寻找新工具,从而使得自己的生活更简单(如果这些工具是免费的,那就更好了)。下载工具时我通常都很细心,对于那些不需送货但价格却贵到“血腥”的工具更是谨慎。不过,对于微软最近在性能检测领域提供的叫做Xperf的新工具,我感到高兴和惊讶。

Xperf是一个先进的故障调试工具,可深入调试各种性能问题,其高度是Perfmon无法企及的。它是产品套件Windows性能工具包(Windows Performance Toolkit ,WPT)的一部分,而WPT则属于微软软件开发包(Microsoft Software Development Kit ,SDK)。Xperf是Windows事件跟踪系统(Event Tracing for Windows,ETW)的补充。ETW则是服务器操作系统的一个内置组件,提供详细的系统性能和系统数据。

Xperf工具能够处理诸多问题,如系统响应问题、启动缓慢、高CPU和磁盘利用率、应用程序延迟及响应缓慢等。它支持在x86、x64和IA-64等平台上的跨平台使用时CPU占用低于2.5%,同时每秒能收集超过20000个系统事件。

换言之,这是一个你绝对会添加到工具箱中的工具。但在我们深入了解Xperf提供的诸多功能之前,我们首先通过一个简短的教程了解一下如何安装Xperf,以及如何利用这个工具调试Windows的各种系统性能问题。

安装Xperf

正如前面提到的那样,Windows性能工具包(WPT)随着Windows软件开发包(SDK)一起发布。在安装SDK之前,你必须首先安装Microsoft .NET Framework 4。除非你想安装整个高达4GB的SDK,否则你就只应该选择Windows性能套件(Windows Performance Toolkit)和Windows调试工具(Debugging Tools for Windows)这两个选项,如图1所示。

你还应该选择可再分发包(Redistributable Package)下的WPT和调试工具(Debugging Tool)选项,这样以后你才可以单独安装使用某个工具,而不用被迫重新安装SDK。安装产生的Windows性能套件和调试工具可以在如下位置找到:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Windows Performance Toolkit

微软,Xperf,监控,Windows,性能

图1:Windows SDK的安装选项

如果你在SDK的安装过程中遇到问题,你可以参考这个故障排除页面寻求帮助,如清理AppData\Local\Temp目录下的文件(我经常需要这么做)。安装完成后,系统会为WPT新建一个程序组,如图2所示。相关的工具放在下面这个目录中:

C:\Program Files\Microsoft Windows Performance Toolkit

微软,Xperf,监控,Windows,性能

图2:Windows性能工具集程序组

配置和使用Xperf

在出问题的服务器上安装WPT(Xperf)之后,下一步就是开始收集事件跟踪信息。根据所遇的问题的不同,你可以跟踪并收集大量的事件。我们可以从下面这个Xperf的CLI命令开始:

Xperf –on DiagEasy

这条命令会收集多个种类的内核事件,包括PROC_THREAD、LOADER、DISK_IO、 HARD_FAULTS、 DPC、 INTERRUPT、 CSWITCH 和 PERF_COUNTER,并将数据记录到一个名为kernel.etl的日志文件中。想要列出所有种类的内核事件,使用下面这条命令:

Xperf –providers KG

注意:丰富的联机帮助对每类事件都做了详细解释

开始收集事件数据后,让服务器重现你准备调试的问题,然后使用如下命令结束收集:

Xperf –d trace.etl

这将合并缓存在kernel.etl中的数据,并最终创建一个名为trace.etl的跟踪日志文件。跟踪日志文件既可以在出现问题的服务器上进行调试,也可以在另外一台装有WPT的服务器上进行。要查看产生的图形和图表,使用下面这条命令:

Xperf trace.etl

跟踪文件将被分两步处理,产生各种图表。默认的图形包括:

  • 各CPU的使用率
  • 各个进程的CPU使用率
  • 各个线程的CPU使用率
  • CPU空闲状态
  • 磁盘I/O、磁盘使用率
  • 各个进程的磁盘使用率
  • 进程的生命周期
  • DPC的CPU使用率
  • 中断的CPU使用率
  • 硬件故障
  • 其它常见事件

将鼠标指针悬停在图形的某一特定线上,你可以看到更多细节,如占用所有CPU使用时间的进程名字。举个例子,在图3中你可以清楚地看到杀毒程序Rtvscan.exe是如何占用CPU的。

微软,Xperf,监控,Windows,性能

图3:CPU使用率-进程图

使用Xperf的另一个方便之处是你可以将某一特定时间范围内的图形放大,从而更清晰地查看这一区域内的图形。图4中,你可以看到在磁盘占用率这幅图里,前60秒后出现了一个峰值。用鼠标指针点击并拖动图上的那个部分,然后右击,选择“放大所选区域”(Zoom To Selection),放大出现问题的时间区域。这样会产生一幅包含你指定时间区域的新图。要回到原图,右击鼠标然后选择“取消放大”(Unzoom)。

微软,Xperf,监控,Windows,性能

图4:Xperf的缩放功能

为了得到更加详细的信息,你可以右击图形,然后选择“汇总表”(Summary Table)。这会产生一个图表,记录所有与该图形相关的计数器和数据。例如,图5就展示了磁盘I/O图的汇总表。表中第一行清晰地显示了Rtvscan.exe进程进行着大量的读操作,这意味着它正在进行病毒扫描。

微软,Xperf,监控,Windows,性能

图5:磁盘I/O图的磁盘汇总表

正如你看到的那样,Xperf是一个非常强大且直观的工具,能够真正帮助你分析系统性能问题。然而,我刚刚谈到的仅仅是Xperf众多功能中的冰山一角,该工具还适用于系统启动缓慢问题的检测、高内核和中断时间以及重点文件的分析等。每一项功能都值得单独为其功能和好处进行一番讨论。