使用 Xperf 配置文件

本节演示如何使用配置文件捕获跟踪。 如果要分析内存,可以考虑将跟踪写入文件,因为 ETW 会完全写入,并且不会干扰缓存。 如果要分析磁盘 I/O,可以考虑将跟踪保存到内存中的循环缓冲区。 还有其他注意事项,例如,是否需要捕获长跟踪,而这个跟踪不适合内存中的缓冲区,或者仅关注跟踪内容的最后 5-10 秒。

过程

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

    xperf -profiles perf!FileIOProfiles.InBuffer
    

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

    配置文件:FileIOProfiles.InBuffer

    会话:FileIOProfiles.InBuffer.Sessions

    会话:FileIOProfiles.InBuffer.Sessions[0].Kernel[0]

    会话:FileIOProfiles.InBuffer.Sessions[0].User[0]

    提供程序:FileIOProfiles.InBuffer.Providers

    提供程序:FileIOProfiles.InBuffer.Providers[0].Kernel[0]

    提供程序:FileIOProfiles.InBuffer.Providers[0].User[0]

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

    xperf -start perf!GeneralProfiles.InSequentialFile
    

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

  3. 使用以下命令显示哪些“InSequentialFile”记录器已针对特定配置文件启动。

    xperf -profileloggers perf!GeneralProfiles.InSequentialFile
    

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

    “perf!GeneralProfiles.InSequentialFile”的会话状态:

    “NT 内核记录器”:正在运行

    PerfCoreUserSession_InSequentialFile:正在运行

  4. 停止“InSequentialFile”跟踪配置文件,保存跟踪,然后使用以下命令将它们合并到跟踪文件中,例如 Merged.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 配置文件