使用 Xperf 配置文件

本部分演示如何使用配置文件捕获跟踪。 如果要分析内存,请考虑将跟踪写入文件,因为 ETW 会通过写入并不扰乱缓存。 如果要分析磁盘 i/o,请考虑将跟踪保存到内存中的循环缓冲区内。 还有其他注意事项,例如是否需要捕获长跟踪,该跟踪无法在内存中容纳到缓冲区,或者只关心最后5-10 秒的跟踪内容。

过程

  1. 选择一个配置文件,如 perf!FileIOProfiles InBuffer 并使用类似于以下示例的命令显示有关它的信息。

    xperf -profiles perf!FileIOProfiles.InBuffer
    

    此命令列出所有配置文件,后跟该配置文件中的会话和提供程序:

    配置文件: FileIOProfiles. InBuffer

    会话: FileIOProfiles. InBuffer

    Session: FileIOProfiles [ 0 ] 。内核 [ 0]

    Session: FileIOProfiles [ 0 ] 。用户 [ 0]

    提供程序: FileIOProfiles. InBuffer

    提供程序: FileIOProfiles。 InBuffer [ 0 ] 。内核 [ 0]

    提供程序: FileIOProfiles。 InBuffer [ 0 ] 。用户 [ 0]

  2. 假设你选择使用基于文件的跟踪,请使用以下命令启动 InSequentialFile 跟踪配置文件。

    xperf -start perf!GeneralProfiles.InSequentialFile
    

    如果出现问题,则会报告错误。 例如,启动同一个配置文件两次会导致会话已在运行时出现错误。

  3. 使用以下命令显示已为特定配置文件启动的 InSequentialFile 记录器。

    xperf -profileloggers perf!GeneralProfiles.InSequentialFile
    

    对此命令的响应类似于下面的示例。

    "Perf!" 的会话状态GeneralProfiles.InSequentialFile":

    "NT 内核记录器":正在运行

    PerfCoreUserSession _ InSequentialFile:正在运行

  4. 停止 InSequentialFile 跟踪配置文件,保存跟踪,然后使用以下命令将它们合并到跟踪文件(如合并的 .etl)中。

    xperf -stop perf!GeneralProfiles.InSequentialFile merged.etl
    

    如果出现问题,则会报告错误。

  5. 启动 InSequentialFile 跟踪配置文件,在开始时间为所有 ETW 会话重写 MaxBuffers 值,以便将记录器启动到256。 若要执行此操作,请使用以下命令。

    xperf -start perf!GeneralProfiles.InSequentialFile -MaxBuffers 256
    

    如果出现问题,则会报告错误。

  6. 使用以下命令更新跟踪配置文件中指定的活动 InSequentialFile ETW 记录器的 MaxBuffers 值。

    xperf -update perf!GeneralProfiles.InSequentialFile -MaxBuffers 256
    

    发出此命令后,不会显示任何响应。

Xperf 配置文件