从多个进程写入相同的性能计数器

本文关键字:性能计数器 进程 | 更新日期: 2023-09-27 18:36:11

我正在使用较新的 System.Diagnostics.PerformanceData API 集写入我的计数器,并希望同时从多个进程中增加/减少单个计数器。

我尝试以各种方式调整CounterSetInstanceType,但没有成功:

如果我使用 Multiple 或 MultipleAggregation,我总是在 perfmon 中看到一个实例,但每个进程实际上都有一个单独的计数器,它们会相互覆盖。单个计数器集类型也会发生相同的行为。

当我尝试使用gloablAggregate 计数器集类型的性能监视器时,似乎根本没有读取值。

从多个进程写入相同的性能计数器

回答我自己的问题:

如下所述:http://msdn.microsoft.com/en-us/library/windows/desktop/ee781345%28v=vs.90%29.aspx

您需要指定如何聚合清单文件中的计数器(通过为每个计数器设置聚合属性)。

似乎不这样做会导致计数器简单地停留在 0/未定义。

在全局聚合的情况下,这非常有效。

在 multipleAggregate 的情况下,这只会对自动为计数器集创建的_Total实例产生影响(由于将其定义为 multipleAggregate)。所有其他实例仍保持旧行为。

似乎还有一个"多实例聚合"计数器类型,但据我所知,清单架构不支持它。(见:http://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata.countersetinstancetype)