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

时间:2012-06-04 19:21:20

标签: c# performancecounter

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

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

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

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

1 个答案:

答案 0 :(得分:1)

回答我自己的问题:

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

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

似乎不这样做会导致计数器只停留在0 / undefined。

在globalAggregate的情况下,这非常有效。

在multipleAggregate的情况下,这仅对自动为反选项创建的_Total实例产生影响(因为将其定义为multipleAggregate)。所有其他实例仍然是旧行为。

似乎还有一个'MultipleInstanceAggregate'计数器类型,但据我所知,它不受清单模式的支持。 (见:http://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata.countersetinstancetype