【发布时间】:2012-12-25 06:39:41
【问题描述】:
我想测量每个处理器的 CPU 使用率。
当我运行以下程序时,我得到实例名称 2、3、0、1 和 _Total。我想我应该得到0、1、0,_Total、1,_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);
}
}
}
【问题讨论】:
-
我不认为操作系统会按 CPU 来分解——我见过的每个系统监视器都只能选择查看每个内核或查看所有内容的总和。
-
您有 4 个处理器内核,因此您可以为每个单独的内核以及它们的总和提供计数器。很难猜出“0,_Total”是什么意思。
-
也许你有一个双核英特尔机器,所以由于超线程,它可能显示 4 个核心和每个核心的使用情况
-
作为后续,this source 表示多核和多 CPU 之间没有实际区别,因此尝试按 CPU 分组可能无关紧要。
-
@hans-passant。 “0,Total”是我从这个link得到的东西
标签: c# performancecounter system.diagnostics