在计算CPU分类时,我遇到了一种不同的行为。在我的代码中,我使用了性能计数器“处理器时间”,例如"_Total“,它似乎工作正常(也显示相同的值,Sysinternals也是这样),但是内置的任务管理器在Windows 8或10中显示的要少得多,如果电源选项允许平衡CPU速度,并且CPU在给定的时刻以较低的频率运行。
有C函数的C#吗,perf.柜台..。提供这个(任务管理器)值,或者读取当前CPU频率并以某种方式计算它?
发布于 2016-04-12 12:03:03
如果有人要面对这一要求,我想告诉你我是如何最终解决这个问题的:
显然,Windows 8包括一个名为"%处理器实用程序“的性能监视器计数器。这就是Win 8和Win 10作为CPU利用率的任务管理器中所显示的。与"%处理器时间“不同,”%处理器时间“通常用于显示CPU使用情况,它考虑到了CPU的平衡速度。
%处理器实用程序是指处理器正在完成的工作量,即如果处理器以其正常性能运行且从不空闲的话,它可以完成的工作量的百分比。在某些处理器上,处理器实用程序可能超过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");https://stackoverflow.com/questions/36548573
复制相似问题