ETW架构以及WPT(Windows Performance Toolkit)命令行的使用

ETW

  • ETW(Event trace for Windows)是微软提供的追踪和记录由应用程序和内核驱动事件的机制。ETW已经由Windows操作系统实现了,所以我们无需对其编程。并且在此基础上提供给了开发者一些快速、可靠、通用的事件追踪特性。
ETW架构图(取自MSDN)

ETW架构图(取自MSDN)

  • 下面解释一些ETW架构中使用到的概念
    • Providers(事件提供者):具体是指提供事件的一些对象,最终抓取到的事件都是来源于它们的
    • Consumers(事件收集者):有时也称Collector,具体是指收集事件的一些对象,这个一般在WPR或者是Xperf中已经编写好了,我们不需要担心这一部分。
    • Session(事件追踪会话):可以理解成追踪事件的一次过程,此时追踪事件的所有数据都还在内存当中,到最后结束追踪的时候
    • Controllers(事件追踪控制者):开启或关闭事件追踪会话

Kernel Provider ···· User Provider

  • 从字面的含义去解释它就是内核级(Kernel)用户级(User)的事件提供者,或者更简单一点,系统已经定义好的Provider就称为System ProviderKernel Provider。而由开发者自定义的Provider就称为User Provider

System Provider ···· Kernel Session ···· Kernel Event

  • System Provider:真名是Windows Kernel Trace,顾名思义,是一个内核级别的事件提供者,因此我们可以说只要你在使用Windows操作系统你就可以追踪到它提供的事件。并且System Provider提供的事件只能被Kernel Session追踪
  • Kernel Session:我们之前提到过Session的概念,不难理解Kernel Session也是一次事件追踪的过程,只不过Kernel Session这次过程追踪的事件都是由System Provider提供的。
  • Kernel Event:是由System Provider产生的内核事件,交给Kernel Session追踪

我们可以通过如下步骤
1)找到命令提示符以管理员身份打开
以管理员身份打开命令提示符

2)使用logman命令查看System Provider的情况

logman query providers "Windows Kernel Trace"

logman命令

  • 注:这里的keyword字段可能会令大家迷惑。这里可以大概模拟一个情形,由于Provider提供了许多类型的事件,所以如果我们对其中所有的事件都进行追踪将会使得最后的.etl文件非常大,从而浪费磁盘空间。所以keyword的实际上相当于一种过滤机制,让开发者可以只追踪一小部分的事件。

3)使用logman命令查看session的情况

logman -ets

logman命令查看session


命令行方式使用WPR

在我的《如何使用WPRWPA记录系统状态》博文中已经提到了如何用UI(User interface)的方式开启记录和关闭记录。这里不做赘述。下面介绍通过命令行方式使用WPR的方法。

1)首先我们可以通过如下命令查看wpr提供的内置监控配置文件(built-in profile)

wpr -profiles

wpr -profiles

  • 注:该命令必须在(以管理员身份打开的cmd.exe中)执行,否则会拒绝访问

2)profile配置文件定义了开启哪些Provider,我们可以通过如下命令查看CPU profile开启了哪些Provider

wpr -profiledetails CPU

wpr -profiledetails CPU

3)通过上述的两个命令,我们可以选取一个内建的profile来开启记录,比如选取CPU profile,命令如下

wpr -start CPU

4)等待几秒,执行wpr -stop xxx.etl命令保存日志文件

wpr -stop test.etl
  • 注:test.etl文件会生成在你cmd.exe的工作路径下,如下图

etl文件生成路径
etl文件生成

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值