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

yizhihongxing

优化响应行为的交互

下载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 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文件的查看器

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

C:\Users\Administrator>cd D:\WinUI3\TraceLogging

C:\Users\Administrator>d:

D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -start MyEventSourceProvider.WPRP

D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPR.exe" -stop TraceCaptureFile.etl description

D:\WinUI3\TraceLogging>"C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\WPA.exe" TraceCaptureFile.etl
  1. 在分析窗口中,可以看到我们创建的TraceLoggingProvider的Event1、Event2、Event3。

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

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

原文链接:https://www.cnblogs.com/duwenlong/archive/2023/04/25/17354389.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:学习TraceLogging事件,使用ETW记录,并使用WPA捕获和分析跟踪 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • C#深拷贝方法探究及性能比较(多种深拷贝)

    C#深拷贝方法探究及性能比较(多种深拷贝) 什么是深拷贝 在 C# 的开发中,经常需要复制一份对象,以便于对该对象进行修改而不影响原来的对象。浅拷贝(shallow copy)只是简单地复制了一份对象的引用,而不是实际的对象,原始对象和副本对象共享引用类型的成员变量。而深拷贝(deep copy)则会创建一份新的对象,并复制原始对象所有的成员变量,包括引用类…

    C# 2023年5月31日
    00
  • Unity3D实现摄像机镜头移动并限制角度

    下面是针对“Unity3D实现摄像机镜头移动并限制角度”的攻略,分为以下几个步骤: 步骤一:创建摄像机游戏对象 首先,我们需要在Unity3D场景中创建一个摄像机游戏对象。可以在层次视图中点击“Create”按钮,然后选择“Camera”创建一个摄像机。 步骤二:添加脚本 接着,我们需要给刚才创建的摄像机对象添加脚本。在Project视图中创建一个新的脚本文…

    C# 2023年6月3日
    00
  • asp.net 2个日期之间的整月数的算法

    计算两个日期之间的整月数,通常可以使用以下算法: 我们可以将两个日期的年、月、日字段提取出来,分别计算两个日期的年数差值YearDiff和月数差值MonthDiff 如果两个日期在同一个月份内,即MonthDiff为0,那么这两个日期之间的整月数就为0,否则,我们需要进行以下判断: 1)如果第一个日期的天数小于或等于第二个日期的天数,那么这两个日期之间的整月…

    C# 2023年6月1日
    00
  • php5 apache 2.2 webservice 创建与配置(java)

    PHP5Apache2.2Webservice是一个用于搭建PHP Web服务的工具。本文将为您提供使用PHP5Apache2.2Webservice创建和配置Web服务的完整攻略。 步骤1:安装PHP5Apache2.2Webservice环境 首先需要准备好服务器,确保服务器上已经安装了Apache、PHP和MySQL。然后可以从此处下载并安装PHP5A…

    C# 2023年5月15日
    00
  • Vs2022环境下安装低版本.net framework的实现步骤

    下面是详细的“Vs2022环境下安装低版本.net framework的实现步骤”的攻略。 环境准备 首先,我们需要准备好以下一些环境: Visual Studio 2022 低版本的 .NET Framework 安装包(例如 .NET Framework 3.5) 安装低版本的 .NET Framework 在 Windows 系统中,打开“控制面板”,…

    C# 2023年6月3日
    00
  • C#使用winform实现进度条效果

    下面我将详细讲解“C#使用winform实现进度条效果”的完整攻略。 1. 确定进度条控件 首先,我们需要确定要使用哪种进度条控件。WinForm提供了两种不同风格的进度条控件:ProgressBar和TrackBar。其中,ProgressBar控件是一个水平或垂直的进度条,它通常用于向用户报告操作的进度。TrackBar控件则允许用户在一个给定范围内拖拽…

    C# 2023年6月6日
    00
  • C#中泛型容器Stack的用法并实现”撤销/重做”功能

    以下是详细讲解“C#中泛型容器Stack的用法并实现”撤销/重做”功能”的完整攻略。 Stack的用法 Stack是C#中的泛型容器,用于实现“栈”这种数据结构。其中T代表栈中存储的元素类型。 Stack主要支持以下几种常用操作: Push(T item):将一个元素压入栈中 Pop():将栈顶的元素弹出并返回 Peek():返回栈顶的元素但不弹出 Clea…

    C# 2023年5月15日
    00
  • Unity使用多态制作计算器功能

    Unity使用多态制作计算器功能完整攻略 概述 多态是面向对象编程中的一个重要概念,可以实现不同类型的对象可以共同使用同一个方法或属性,具有很高程度的灵活性,使得代码更易于维护和扩展。在Unity中使用多态可以应用于一些计算器功能的实现,例如加减乘除等。 实现步骤 1. 建立抽象类 在Unity中实现多态的第一步就是建立一个抽象类,用于定义所有计算器功能所共…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部