Windows性能分析器概述(二)
二、Windows性能分析器的结构
Windows性能分析器由三个可执行文件 (.exe)组成。一般来说,我们可以通过命令行或者可执行脚本来运行这些可执行文件。下面的表格包括了这些可执行文件所具有的功能。
可执行文件名称 |
功能 |
xperf.exe |
捕获、处理和格式化软件执行时的追踪信息。 这些信息可以被导出到任何一台安装了Windows性能分析器的机器上进行处理和分析。 |
xperf.exe or xperfview.exe |
将软件执行中的追踪信息采用可交互的图形以及表格的方式显示出来。 使用xperf或xperfview会得到相同的显示结果。 |
xbootmgr.exe |
自动进行开机和关机操作,并且捕获其中的追踪信息。 |
除此以外,我们还可以通过编程的方式来捕获对内核方法的调用信息,并且用Windows性能分析器来进行分析。如果要了解更多的关于如何通过编程的方式来捕获对内核方法的调用信息,请参考Programmatically Controlling Kernel Traces章节(英文)。
我们可以使用不同的命令行参数来调整输出的内容。为了让这些参数更易于使用,Windows性能分析器将一些参数组合起来,我们可以使用这些参数组合来使命令行操作更简单清晰。不仅如此,我们还可以方便地定义自己的参数组合,用以调整分析的结果,并能在用户自己的程序中使用这些结果。
以上文章基于Windows Performance Analyzer Architecture翻译。
三、Windows事件追踪
Windows事件追踪(ETW)是Windows性能分析器(WPA)的基础。WPA提供了一套程序,隐藏了ETW的API的复杂性。
这里将简要介绍一下ETW。
ETW可以让我们用统一而又直接的方法来捕获内核和应用程序事件。事件捕获功能可以在任何时候开启和关闭,不需要重启系统或者进程。WPA通过图表,表格和摘要数据来显示ETW收集的信息,这样更加直观,可读性也更强。
通过捕获和显示特定事件,你可以在不破坏系统或应用程序原有行为的情况下检测并分析它的性能问题。ETW允许动态地开启或关闭事件追踪。Windows性能分析器通过ETW收集和组织系统信息。
ETW主要由三部分组成:
- 控制器-启动和关闭一个事件追踪会话,以及启动事件提供部件
- 事件提供部件-返回特定事件
- 消耗部件-分析事件提供部件返回的数据
ETW图解
WPA使用一条追踪来捕获并分析数据,这个过程与图解上一致:
- 通过WPA命令行可以开启追踪功能(控制器)
- 特定事件提供部件会提供需要的事件信息(事件提供部件)
- 通过WPA可以关闭ETW收集功能,并将数据存储到一个ETL追踪文件(控制器)
- WPA也可以用来显示追踪文件,多个追踪文件可以通过WPA来合并和查看(消耗部件)
内核和应用程序事件可以提供系统操作的详细信息。几乎每一个会影响系统性能的事件都被定义,通过NT Kernel Logger,WPA可以使用它们。为了简化事件集合,WPA预定义了一些事件,需要时这些事件可以被合并。
另外,开发人员也可以通过Windows事件API来提供自定义的事件。
以上文章基于 Event Tracing for Windows翻译。
译者:张昕毅、焦桢