CPU使用率和CPU速度



我在计算CPU初始化时遇到了一种不同的行为。在我的代码中,我使用性能计数器"Processor Time",实例"_Total"和它似乎工作正常(Windows性能监视器显示相同的值,Sysinternals Process Explorer也显示)但是如果电源选项允许平衡CPU速度和CPU在给定时刻以较低的频率运行。

有C函数的C#吗,性能计数器。。为了提供这个(任务管理器)值,或者读取当前CPU频率并以某种方式计算它?

如果有人会面临这个要求,我想向你展示我是如何最终解决的:

显然,Windows8包含一个名为"%ProcessorUtility"的性能监视器计数器。这就是Win 8和Win 10的任务管理器中显示的CPU利用率。此计数器不同于通常用于显示CPU使用情况的"%处理器时间",它考虑了平衡的CPU速度。

%Processor Utility 是处理器正在完成的工作量,如果处理器以标称性能运行且从不空闲,则占处理器可以完成的工作量的百分比。在某些处理器上,Processor Utility可能超过100%

在c#代码片段中:

PerformanceCounter _cpuCounter = new PerformanceCounter("Processor Information", "% Processor Utility", "_Total");
CounterSample firstValue = _cpuCounter.NextSample();
Thread.Sleep(500);
CounterSample secondValue = _cpuCounter.NextSample();
    string cpuUsage = CounterSample.Calculate(firstValue, secondValue).ToString("0.0");

最新更新