绩效计数器与ETW

时间:2011-02-01 15:39:51

标签: performance performancecounter etw

性能指标是ETW的一部分吗?如果没有,两者之间有什么区别?

2 个答案:

答案 0 :(得分:36)

性能计数器和ETW是不同的技术。性能计数器不通过ETW公开。

基本区别:性能计数器提供有关系统行为的高级指标(考虑定时器和读取的字节数以及分配的对象),而ETW是诊断跟踪和日志记录工具(思考Debug.WriteLine消息,但更丰富,更结构化)。

目前,ETW和性能计数器都得到了Windows的全力支持,作为开发人员,您可以编写代码来生成使用这两种技术的数据。

效果计数器

Performance counters,也称为PDH(性能数据助手)计数器,是简单的数字度量标准,可以为您提供特定系统行为方式的高级摘要。例如,% Processor Time是一个性能计数器,它告诉您处理器用于执行用户模式代码的时间。作为一个更复杂的示例,# of Methods Jitted类别中的.NET CLR Jit告诉您自应用程序启动以来有多少.NET方法是JIT编译的。

性能计数器通常用于监视系统运行状况并诊断特定的性能问题。当出现严重错误时,它们是问题的良好指标,但它们并没有详细说明为什么会出现特定问题。

要查看Windows性能计数器,只需运行perfmon即可。在Vista +上,您可能需要单击“性能监视器”节点才能查看计数器图表。要以编程方式访问性能计数器,请查看.NET中的System.Diagnostics.PerformanceCounter类或本地代码的PDH library

Windows事件跟踪(ETW)

ETW是Windows内置的跟踪系统。实质上,任何组件(例如用户应用程序,甚至Windows内核本身)都可以发出有关组件关注的特定事件的诊断跟踪信息。例如,内核在进程启动和停止时,在加载和卸载图像(例如DLL)时,在创建或销毁线程时,或者甚至在线程执行上下文切换时发送ETW事件。记录的数据采用序列化格式,由其他组件描述,允许诊断工具读取和理解会话期间记录的ETW事件。请参阅here,了解一切如何协同工作的方框图。

ETW意味着速度很快,并且在未启用日志记录时不应对系统的性能产生重大影响。从Vista开始,ETW遍布整个Windows,旨在供应用程序开发人员使用(具体而言,您的应用程序可以是记录事件的ETW提供程序)。 ETW是事件日志的基础,可供性能分析器,调试器或系统监视器使用。

有关与ETW接口的一些资源,请参阅我的其他SO帖子here

答案 1 :(得分:6)

似乎基于this document从Vista +开始,性能计数器有一个ETWFaçade,因此它们可以像ETW一样完全消耗。

WindowsVista®附带的新性能计数器库(PERFLIB 2.0版)为开发人员提供了许多优势,包括:

提供者和使用者之间基于Windows事件跟踪(ETW)通知的标准进程间通信(IPC)机制,可以简化开发并提供更加统一和可靠的代码。

enter image description here

相关问题