学习TraceLogging事件,使用ETW记录,并使用WPA捕获和分析跟踪

  • 学习TraceLogging事件,使用ETW记录,并使用WPA捕获和分析跟踪已关闭评论
  • 128 次浏览
  • A+
所属分类:.NET技术
摘要

下载WINDOWS评估和部署工具包 (Windows ADK)保持默认安装驱动延迟优化的基本步骤包括:


优化响应行为的交互

下载WINDOWS评估和部署工具包 (Windows ADK)

保持默认安装

驱动延迟优化的基本步骤包括:

  1. 定义方案并添加 TraceLogging 事件。TraceLogging 是用于日志记录事件的系统,无需清单即可解码,TraceLogging基于windows事件跟踪(ETW),并提供检测代码的简化办法。C#可选的有.NET EventSource类,WinRT有LoggingChannel,社区支持的TraceLoggingDynamic。
  2. 根据交互类设置目标,用户对应用的性能和响应能力有不同的期望。
  3. 若要检查特定交互的确切持续时间,可以使用 Windows 性能分析器 (WPA) 捕获和分析跟踪。
  4. 分析跟踪并查找改进机会。

学习使用TraceLogging

  1. 创建EventSource,创建 EventSource 类的实例。 第一个构造函数参数标识此提供程序的名称。

    private static EventSource log = new EventSource("TraceLoggingProvider"); 

    实例标注为静态,因为一次应用程序中只有一个特定提供程序的一个实例。

  2. 日志TraceLogging事件

    log.Write("Event 1");  log.Write("Event 2", new { someEventData = DateTime.Now });  ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now }; log.Write("Event 3", EventData);   [EventData]   public sealed class ExampleStructuredData {    public int TransactionID { get; set; }    public DateTime TransactionDate { get; set; } } 

    注意下面的
    这个Name是你的提供程序记录事件。

    1. 把下面的文件保存成.WPRP后缀,名字随便起。
    <?xml version="1.0" encoding="utf-8"?> <!-- TODO:  1. Find and replace "TraceLoggingProvider" with the name of your provider. 2. See TODO below to update GUID for your event provider --> <WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation" Copyright="Microsoft Corporation" Company="Microsoft Corporation">  <Profiles>    <EventCollector Id="EventCollector_TraceLoggingProvider" Name="TraceLoggingProvider">      <BufferSize Value="64" />      <Buffers Value="4" />    </EventCollector>     <!-- TODO:    1. Update Name attribute in EventProvider xml element with your provider GUID, eg: Name="0205c616-cf97-5c11-9756-56a2cee02ca7". Or       if you specify an EventSource C# provider or call TraceLoggingRegister(...) without a GUID, use star (*) before your provider       name, eg: Name="*MyEventSourceProvider" which will enable your provider appropriately.    2. This sample lists one EventProvider xml element and references it in a Profile with EventProviderId xml element.       For your component wprp, enable the required number of providers and fix the Profile xml element appropriately    -->    <EventProvider Id="EventProvider_TraceLoggingProvider" Name="*TraceLoggingProvider" />     <Profile Id="TraceLoggingProvider.Verbose.File" Name="TraceLoggingProvider" Description="TraceLoggingProvider" LoggingMode="File" DetailLevel="Verbose">      <Collectors>        <EventCollectorId Value="EventCollector_TraceLoggingProvider">          <EventProviders>            <!-- TODO:            1. Fix your EventProviderId with Value same as the Id attribute on EventProvider xml element above            -->            <EventProviderId Value="EventProvider_TraceLoggingProvider" />          </EventProviders>        </EventCollectorId>      </Collectors>    </Profile>     <Profile Id="TraceLoggingProvider.Light.File" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="File" DetailLevel="Light" />    <Profile Id="TraceLoggingProvider.Verbose.Memory" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />    <Profile Id="TraceLoggingProvider.Light.Memory" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Light" />   </Profiles> </WindowsPerformanceRecorder> 
    1. 打开CMD使用管理员进入到你保存XML的路径启动wpr.exe

"C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPR.exe" -start MyEventSourceProvider.WPRP
5. 允许包含事件的应用程序。
6. 停止跟踪捕获
"C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPR.exe" -stop TraceCaptureFile.etl description

使用windows 性能分析器查看TracLogging数据

在刚才的目录下生成一个.etl文件,WPA是目前唯一可以查看TracLogging文件的查看器

  1. 启动WPA, 加载文件
    "C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPA.exe" TraceCaptureFile.etl
  2. 查看提供程序事件。在WPA图形资源管理器中,展开“系统活动(System Activity)”。
  3. 双击“泛型事件(Generic Events)”中的分析窗格中的事件。
  4. 在分析窗格中,找到提供程序的事件,验证TraceLogging是否正常工作。
Microsoft Windows [版本 10.0.22621.1555] (c) Microsoft Corporation。保留所有权利。  C:UsersAdministrator>cd D:WinUI3TraceLogging  C:UsersAdministrator>d:  D:WinUI3TraceLogging>"C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPR.exe" -start MyEventSourceProvider.WPRP  D:WinUI3TraceLogging>"C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPR.exe" -stop TraceCaptureFile.etl description  D:WinUI3TraceLogging>"C:Program Files (x86)Windows Kits10Windows Performance ToolkitWPA.exe" TraceCaptureFile.etl 
  1. 在分析窗口中,可以看到我们创建的TraceLoggingProvider的Event1、Event2、Event3。

图床不能用了。没有图了,自己测试一下就好了。

后续的资料。
Windows 性能分析器 | Microsoft Learn