性能计数器和 ETW 是不同的技术。性能计数器不通过 ETW 公开。
基本区别:性能计数器提供有关系统行为的高级指标(例如计时器、读取的字节和分配的对象),而 ETW 是一种诊断跟踪和日志记录工具(例如Debug.WriteLine
消息,但更丰富、更结构化)。
目前,ETW和性能计数器都得到了Windows的全面支持,作为开发人员,您可以编写代码来生成and消耗这两种技术的数据。
性能计数器
性能计数器 http://msdn.microsoft.com/en-us/library/aa373083(v=VS.85).aspx也称为 PDH(性能数据助手)计数器,是简单的数字指标,可以为您提供特定系统行为方式的高级摘要。例如,% Processor Time
是一个性能计数器,它告诉您有多少处理器时间用于执行用户模式代码。作为一个更复杂的例子,# of Methods Jitted
in the .NET CLR Jit
类别告诉您自应用程序启动以来有多少个 .NET 方法被 JIT 编译。
性能计数器通常用于监视系统运行状况并诊断特定的性能问题。当出现严重错误时,它们可以很好地指示问题,但它们不会为您提供有关特定问题发生原因的详细信息。
要查看 Windows 性能计数器,您只需运行perfmon
。在 Vista+ 上,您可能需要单击“性能监视器”节点才能查看计数器图表。要以编程方式访问性能计数器,请查看System.Diagnostics.PerformanceCounter http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx.NET 中的类或PDH文库 http://msdn.microsoft.com/en-us/library/aa373078(v=VS.85).aspx对于本机代码。
Windows 事件跟踪 (ETW)
ETW 是 Windows 内置的跟踪系统。本质上,任何组件(例如用户应用程序,甚至 Windows 内核本身)都可以发送有关该组件关心的特定事件的诊断跟踪信息。例如,当进程启动和停止时、加载和卸载映像(例如 DLL)时、创建或销毁线程时,甚至当线程进行上下文切换时,内核都会发送 ETW 事件。记录的数据采用由其他地方的组件描述的序列化格式,允许诊断工具读取和理解会话期间记录的 ETW 事件。看here http://msdn.microsoft.com/en-us/library/ff190903(VS.85).aspx查看所有内容如何协同工作的盒线图。
ETW 旨在快速,并且在未启用日志记录时不应对系统性能产生重大影响。从 Vista 开始,ETW 在整个 Windows 中普遍存在,旨在供应用程序开发人员使用(具体来说,您的应用程序可以是记录事件的 ETW 提供程序)。 ETW 是事件日志的基础,可供性能分析器、调试器或系统监视器使用。
请参阅我的其他帖子here https://stackoverflow.com/questions/4833736/registry-monitoring-including-kernel-mode-registry-accesses/4835195#4835195有关与 ETW 接口的一些资源。