perfmon 性能计数器是不是基于与 xperf 使用的 ETW 事件“底层”相同的东西?
Posted
技术标签:
【中文标题】perfmon 性能计数器是不是基于与 xperf 使用的 ETW 事件“底层”相同的东西?【英文标题】:Are perfmon performance counters based on the same thing "under the hood" as the ETW events used by xperf?perfmon 性能计数器是否基于与 xperf 使用的 ETW 事件“底层”相同的东西? 【发布时间】:2010-11-06 07:01:40 【问题描述】:我最近开始熟悉 perfmon 和 xperf。 Perfmon 使用性能计数器,而 xperf 使用 ETW(Windows 事件跟踪)。 Perfmon 具有提供数据的对象,而 xperf 使用“提供者”组。作为该领域的新手,我想问是否有人能告诉我 perfmon 使用的性能计数器是否真的基于与 xperf 使用的 ETW 事件相同的东西,如果是这样,你能否明确联系。如果它们不是基于相同的东西,你能解释一下它们有何不同吗?
【问题讨论】:
【参考方案1】:Perf counters 和 ETW 是两个不同的东西,它们不共享底层基础架构。
计数器用于提供 关于如何以及如何的信息 操作系统或应用程序, 服务,或驱动程序正在执行。这 计数器数据可以帮助确定系统 瓶颈和微调系统和 应用性能。经营的 系统、网络和设备提供 计数器数据,应用程序可以 消费为用户提供 系统性能的图形视图 正在执行。
Windows 事件跟踪 (ETW) 是一种 高效的内核级跟踪 可让您记录内核或 应用程序定义的事件到日志 文件。
它们都可以用于性能分析,但 ETW 提供了对应用程序内部行为随时间推移的审计跟踪(如传统的用户模式日志文件),而 PerfMon 提供应用程序中任一当前统计信息的视图(“当前队列长度”),或在其生命周期内的聚合数据(例如“平均吞吐量”、“发送的总字节数”)。
【讨论】:
【参考方案2】:基于this document,从 Vista+ 开始,性能计数器似乎具有 ETW Façade,因此可以以与 ETW 完全相同的方式使用它们。
Windows Vista® 中包含的新性能计数器库(PERFLIB 2.0 版)为开发人员提供了许多优势,包括:
提供者和消费者之间基于事件跟踪 (ETW) 通知的提供者和消费者之间的标准进程间通信 (IPC) 机制,可简化开发并提供更统一和可靠的代码。
【讨论】:
以上是关于perfmon 性能计数器是不是基于与 xperf 使用的 ETW 事件“底层”相同的东西?的主要内容,如果未能解决你的问题,请参考以下文章