【发布时间】:2016-04-11 12:21:16
【问题描述】:
我在计算 CPU 利用率时遇到了不同的行为。 在我的代码中,我使用性能计数器“处理器时间”,实例“_Total”和 它似乎工作正常(Windows 性能监视器显示相同的值,Sysinternals Process Explorer 也是如此) , 但 Windows 8 或 10 中的内置任务管理器显示更少,如果电源选项允许平衡 CPU 速度并且 CPU 是 在给定的时刻以较低的频率运行。
是否有任何 C# 的 C 函数,perf。 counter .. 提供此(任务管理器)值, 还是读取当前的 CPU 频率并以某种方式计算?
【问题讨论】:
-
使用 _Total,从而获得用于 所有 进程的处理器时间,而不仅仅是您的进程,这是非常不寻常的,而不是任务管理器在其进程选项卡中显示的内容。类别很重要,有“处理器”和“处理器信息”。任务管理器使用后者,它是一个更新的计数器类别,试图补偿可变时钟速率和超线程。最好的方法当然是不要在你的程序中添加一个在没有任何帮助的情况下微不足道的装饰物。
-
谢谢,但是“处理器”和“处理器信息”类别给了我相同的数字,即使 CPU 以大约一半的频率运行。