性能计数器是ETW的一部分吗?若否,两者有何分别?
发布于 2011-02-02 15:20:14
性能计数器和ETW是截然不同的技术。性能计数器不通过ETW公开。
基本区别是:性能计数器提供关于系统行为的高级指标(考虑计时器、读取的字节数和分配的对象),而ETW是一种诊断跟踪和日志记录工具(考虑Debug.WriteLine消息,但更丰富、更结构化)。
目前,ETW和性能计数器都完全支持Windows,作为开发人员,您可以编写代码来为这两种技术生成和使用数据。
性能计数器
Performance counters也称为性能数据助手(Performance Data Helper)计数器,它们是简单的数字指标,可为您提供特定系统运行情况的高级摘要。例如,% Processor Time是一个性能计数器,它告诉您有多少处理器时间用于执行用户模式代码。作为一个更复杂的示例,.NET CLR Jit类别中的# of Methods Jitted告诉您自应用程序启动以来有多少.NET方法被即时编译。
性能计数器通常用于监视系统运行状况和诊断特定的性能问题。当某些事情严重出错时,它们是一个很好的问题指示器,但它们不会给您提供关于为什么会发生特定问题的太多细节。
要查看Windows性能计数器,只需运行perfmon即可。在Vista+上,您可能需要单击“性能监视器”节点才能查看计数器图表。若要以编程方式访问性能计数器,请查看.NET中的System.Diagnostics.PerformanceCounter类或本机代码的PDH library。
Windows (ETW)的事件跟踪
ETW是一个内置在Windows中的跟踪系统。本质上,任何组件(例如,用户应用程序,甚至Windows内核本身)都可以发出有关该组件所关心的特定事件的诊断跟踪信息。例如,当进程启动和停止时,当加载和卸载映像(例如DLL)时,当创建或销毁线程时,甚至当线程进行上下文切换时,内核都会发出ETW事件。记录的数据是组件在其他地方描述的序列化格式,允许诊断工具读取和理解会话期间记录的ETW事件。请参阅here,了解所有内容如何协同工作的框线图。
ETW应该是快速的,并且在未启用日志记录时不会对系统性能造成实质性影响。从Vista开始,ETW在整个Windows中无处不在,旨在供应用程序开发人员使用(这意味着,具体地说,您的应用程序可以是记录事件的ETW提供者)。ETW是事件日志的基础,可由性能分析器、调试器或系统监视器使用。
请参阅我的另一篇文章here,获取有关与ETW接口的一些参考资料。
发布于 2013-02-27 15:16:18
从Vista+开始,基于this document的性能计数器似乎有一个ETW外观,因此可以像使用ETW一样使用它们。
Windows Vista®附带的新性能计数器库(PERFLIB 2.0版)为开发人员提供了许多优势,包括:
提供程序和使用者之间的标准进程间通信(IPC)机制,该机制基于Windows事件跟踪(ETW)通知,可简化开发并使代码更加统一和可靠。

https://stackoverflow.com/questions/4864576
复制相似问题