如何在C#中获取每个处理器的CPU使用率?

时间:2013-01-10 18:59:44

标签: c# performancecounter system.diagnostics

我想测量每个处理器的CPU使用率。

当我运行以下程序时,我得到实例名称2301_Total。我想我应该010,_Total1,_Total

结果意味着什么?如何获得每个处理器的总CPU使用率。不是每个核心?

 class PerfMonitor
{
    static void Main()
    {
        var pc = new PerformanceCounter("Processor", "% Processor Time");
        var cat = new PerformanceCounterCategory("Processor");
        var instances = cat.GetInstanceNames();

        foreach (var s in instances)
        { 
            pc.InstanceName = s;
            Console.WriteLine("instance name is {0}", s);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

  

结果意味着什么?

你的结果是:

instance name is 2
instance name is 3
instance name is 0
instance name is 1
instance name is 6
instance name is 7
instance name is 4
instance name is 5
instance name is _Total

每个实例都是处理器的逻辑ID(包括超V逻辑的),除了最后一个是系统上所有处理器的累积实例。

答案 1 :(得分:0)

由于Windows将内核视为处理器,因此这不是一件容易的事。你可以先尝试determine the number of physical CPUs,但这很痛苦。

答案 2 :(得分:0)

下载OpenHardwareMonitor,它是开源的,包含一个可用于执行此操作的DLL