翼度科技»论坛 编程开发 .net 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
优化响应行为的交互

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

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


  • 创建EventSource,创建 EventSource 类的实例。 第一个构造函数参数标识此提供程序的名称。
    1. private static EventSource log = new EventSource("TraceLoggingProvider");
    复制代码
    实例标注为静态,因为一次应用程序中只有一个特定提供程序的一个实例。
  • 日志TraceLogging事件
    1. log.Write("Event 1");
    2. log.Write("Event 2", new { someEventData = DateTime.Now });
    3. ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now };
    4. log.Write("Event 3", EventData);
    5. [EventData]  
    6. public sealed class ExampleStructuredData
    7. {
    8.    public int TransactionID { get; set; }
    9.    public DateTime TransactionDate { get; set; }
    10. }
    复制代码
    注意下面的
    这个Name是你的提供程序记录事件。

    • 把下面的文件保存成.WPRP后缀,名字随便起。
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <WindowsPerformanceRecorder Version="1.0" Author="Microsoft Corporation" Copyright="Microsoft Corporation" Company="Microsoft Corporation">
    3. <Profiles>
    4.    <EventCollector Id="EventCollector_TraceLoggingProvider" Name="TraceLoggingProvider">
    5.      <BufferSize Value="64" />
    6.      <Buffers Value="4" />
    7.    </EventCollector>
    8.    
    9.    <EventProvider Id="EventProvider_TraceLoggingProvider" Name="*TraceLoggingProvider" />
    10.    <Profile Id="TraceLoggingProvider.Verbose.File" Name="TraceLoggingProvider" Description="TraceLoggingProvider" LoggingMode="File" DetailLevel="Verbose">
    11.      <Collectors>
    12.        <EventCollectorId Value="EventCollector_TraceLoggingProvider">
    13.          <EventProviders>
    14.            
    15.            <EventProviderId Value="EventProvider_TraceLoggingProvider" />
    16.          </EventProviders>
    17.        </EventCollectorId>
    18.      </Collectors>
    19.    </Profile>
    20.    <Profile Id="TraceLoggingProvider.Light.File" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="File" DetailLevel="Light" />
    21.    <Profile Id="TraceLoggingProvider.Verbose.Memory" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Verbose" />
    22.    <Profile Id="TraceLoggingProvider.Light.Memory" Name="TraceLoggingProvider" Description="TraceLoggingProvider" Base="TraceLoggingProvider.Verbose.File" LoggingMode="Memory" DetailLevel="Light" />
    23. </Profiles>
    24. </WindowsPerformanceRecorder>
    复制代码

    • 打开CMD使用管理员进入到你保存XML的路径启动wpr.exe

"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -start MyEventSourceProvider.WPRP
5. 允许包含事件的应用程序。
6. 停止跟踪捕获
"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -stop TraceCaptureFile.etl description
使用windows 性能分析器查看TracLogging数据

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

  • 启动WPA, 加载文件
    "C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPA.exe" TraceCaptureFile.etl
  • 查看提供程序事件。在WPA图形资源管理器中,展开“系统活动(System Activity)”。
  • 双击“泛型事件(Generic Events)”中的分析窗格中的事件。
  • 在分析窗格中,找到提供程序的事件,验证TraceLogging是否正常工作。
  1. Microsoft Windows [版本 10.0.22621.1555]
  2. (c) Microsoft Corporation。保留所有权利。
  3. C:\Users\Administrator>cd D:\WinUI3\TraceLogging
  4. C:\Users\Administrator>d:
  5. D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -start MyEventSourceProvider.WPRP
  6. D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -stop TraceCaptureFile.etl description
  7. D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPA.exe" TraceCaptureFile.etl
复制代码

  • 在分析窗口中,可以看到我们创建的TraceLoggingProvider的Event1、Event2、Event3。
图床不能用了。没有图了,自己测试一下就好了。
后续的资料。
Windows 性能分析器 | Microsoft Learn

来源:https://www.cnblogs.com/duwenlong/archive/2023/04/25/17354389.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具