从多个进程写入相同的性能计数器
本文关键字:性能计数器 进程 | 更新日期: 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)