你能打开perfmon.exe,清除所有当前计数并添加你的自定义应用程序计数器吗

本文关键字:添加 程序计数器 应用 自定义 perfmon exe 清除 | 更新日期: 2023-09-27 18:00:56

您能从C#打开perfmon.exe,清除任何当前计数并添加自定义应用程序计数器吗?

考虑到perfmon API,但我找不到它。

你能打开perfmon.exe,清除所有当前计数并添加你的自定义应用程序计数器吗

性能计数器不太适合跟踪应用程序级别的指标。

在Linux/Unix世界中,有一个出色的Graphite和StatsD组合,我们已经将其移植到了.NET:Statisify。

它允许您从应用程序中收集各种指标:数据库查询的数量、调用Web服务所需的时间、跟踪活动连接的数量等——所有这些都使用简单的API,如

Stats.Increment("db.query.count");

您可以使用PerformanceCounter类,即intSystem.Diagnostics命名空间。

要添加您自己的类别和计数器,您可以使用以下代码:

if (!PerformanceCounterCategory.Exists("AverageCounter64SampleCategory"))
        {
            CounterCreationDataCollection CCDC = new CounterCreationDataCollection();
            // Add the counter.
            CounterCreationData averageCount64 = new CounterCreationData();
            averageCount64.CounterType = PerformanceCounterType.AverageCount64;
            averageCount64.CounterName = "AverageCounter64Sample";
            CCDC.Add(averageCount64);
            // Add the base counter.
            CounterCreationData averageCount64Base = new CounterCreationData();
            averageCount64Base.CounterType = PerformanceCounterType.AverageBase;
            averageCount64Base.CounterName = "AverageCounter64SampleBase";
            CCDC.Add(averageCount64Base);
            // Create the category.
            PerformanceCounterCategory.Create("AverageCounter64SampleCategory",
                "Demonstrates usage of the AverageCounter64 performance counter type.",
                CCDC);
        }

要清除计数器,您可以将RawValue重置为0,如下所示:

var pc = new PerformanceCounter("AverageCounter64SampleCategory",
            "AverageCounter64Sample",
            false);
        pc.RawValue = 0;

上面的这些示例代码是我从这个链接得到的:system.diagnostics.performancecounter

希望能有所帮助。