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

优化响应行为的交互

下载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/p/17354389.html

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

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

相关文章

  • 让IIS8支持WCF的更简单方法

    让IIS8支持WCF的更简单方法 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的技术。在IIS8上部署WCF服务时,需要进行一些配置。本文将详细讲解如何让IIS8支持WCF的更简单方法,并提供两个示例。 1. 安装.NET Framework 4.5 在IIS8上部署WCF服务之前,需要先安装.NET…

    C# 2023年5月15日
    00
  • c# Newtonsoft.Json 常用方法总结

    c# Newtonsoft.Json 常用方法总结 简介 Newtonsoft.Json 是一个高性能的 JSON 框架,为 JSON 互转提供了一系列便捷易用的 API,是 .NET 应用开发不可缺少的一部分。本文将介绍 Newtonsoft.Json 常用方法的总结,并且通过具体的示例进行说明,帮助读者更好的理解和应用。 安装 Newtonsoft.Js…

    C# 2023年5月31日
    00
  • C# Random类随机函数实例详解

    C# Random类随机函数实例详解 在C#编程中,经常需要使用到随机数,C#中提供了Random类,可以非常方便地生成伪随机数。本文将针对C# Random类进行详细讲解,并附上两个示例说明。 1. Random类概述 Random类可以生成一个伪随机数序列。 随机数是一些不可预测的数字,它们是通过算法生成的,而不是通过任何物理过程生成的。 随机类的构造函…

    C# 2023年6月8日
    00
  • asp.net TemplateField模板中的Bind方法和Eval方法

    ASP.NET的GridView控件中可以使用TemplateField模板来自定义一个单元格的显示方式。在TemplateField模板中,可以使用Bind或Eval方法对数据进行绑定和显示,下面是详细的攻略。 TemplateField模板 在GridView的Columns节点中添加TemplateField字段即可定义一个模板字段。例如: <a…

    C# 2023年5月31日
    00
  • C#栈和队列的简介,算法与应用简单实例

    C#栈和队列的简介 什么是栈和队列? 栈(Stack)和队列(Queue)是两种常用的数据结构,它们都是线性数据结构。 栈就像是一个箱子,我们往箱子里放入物品(压栈),并取出箱子里面的物品(弹栈)。 队列就像是一条排队的队伍,我们往队伍的尾部加入一个人(入队),并从队伍的头部取出一个人(出队)。 算法 栈(Stack) 1.入栈(Push):将一个元素加入栈…

    C# 2023年5月31日
    00
  • .Net Core中自定义认证实现

    在ASP.NET Core中,可以使用自定义认证实现来实现自定义身份验证方案。在本攻略中,我们将介绍如何在ASP.NET Core中实现自定义认证实现。 步骤一:创建ASP.NET Core MVC项目 首先,需要创建一个ASP.NET Core MVC项目。可以使用以下命令在命令行中创建一个新的ASP.NET Core MVC项目: dotnet new …

    C# 2023年5月17日
    00
  • Spring.Net IOC依赖注入原理流程解析

    下面是对于“Spring.Net IOC依赖注入原理流程解析”的详细讲解: 1. 什么是IOC? IOC 全称是 Inversion of Control,即控制反转。 意思是将原本由程序员编码决定的对象间调用关系,通过外部配置文件描述,交由 Spring.Net 框架来管理和实现。 Spring.Net 提供的 IOC 叫做 Dependency Inje…

    C# 2023年6月3日
    00
  • C# 使用PictureBox实现图片按钮控件的示例步骤

    下面为大家分享C#使用PictureBox实现图片按钮控件的示例步骤: 步骤1:添加PictureBox控件 在窗体中添加一个PictureBox控件,在该控件的属性中设置Image属性为要作为按钮的图片文件。在此基础上,可以对控件进行进一步设置如:SizeMode等。 步骤2:实现按钮效果 实现按钮效果需要通过各种事件来实现。可以使用MouseEnter和…

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