Windows 2022 上的 % 处理器时间 / _Total 性能计数器严重不正确?

Windows 2022 上的 % 处理器时间 / _Total 性能计数器严重不正确?

我见过各种关于 % Processor Time / _Total 性能计数器与 CPU 使用率略有不一致的帖子,但就我而言,它的偏差约为 10 倍:

性能计数器 任务管理器

10分钟后我检查时,一切恢复正常,但我无法解释这种异常现象。

有任何想法吗?

谢谢!

答案1

那么让我们开始吧。请将标题更改为“Windows Server 2022”而不是“12”。

性能计数器中的处理器对象为我们提供了有关驱动计算机的处理器使用情况的完整详细信息。如果您使用的是多核处理器,您将看到服务器每个核心的实例,选择适当的计数器,我们甚至可以计算出每个 CPU 的使用情况。使用 _total 计数器时请注意中位数计数器。

% Processor Time 是处理器执行非空闲线程所花费时间的百分比。计算方法是测量处理器执行空闲线程所花费时间的百分比,然后从 100% 中减去该值。(每个处理器都有一个空闲线程,当没有其他线程准备运行时,它会消耗周期)。此计数器是处理器活动的主要指标,显示采样间隔期间观察到的繁忙时间的平均百分比。应该注意,处理器是否空闲的核算是在系统时钟的内部采样间隔(10ms)内执行的。因此,在当今快速的处理器上,% Processor Time 可能会低估处理器利用率,因为处理器可能在系统时钟采样间隔之间花费大量时间为线程提供服务。基于工作负载的计时器应用程序就是一个更容易被错误测量的应用程序示例,因为计时器在采样后立即发出信号。

% 处理器时间是所有进程线程使用处理器执行指令所用时间的百分比。指令是计算机中的基本执行单位,线程是执行指令的对象,进程是程序运行时创建的对象。此计数包括为处理某些硬件中断和陷阱条件而执行的代码。

现在,进程对象下的处理器时间计数器给出了该进程单独占用的 CPU 量。该值是根据(逻辑 CPU 数量 * 100)的基线计算得出的,因此,这将根据 100 以上的基线进行计算。

假设您正在使用 QUADCore 系统,因此计算此值的基线是 400。所以现在如果我们运行数据收集器集并捕获所有进程并按其处理器时间的顺序对它们进行排序,我们将找出服务器中占用最多 CPU 的进程。

可能会出现这样的情况:该值大于 400,即大于(逻辑 CPU 数量 * 100),这表明该进程正在大量使用多线程,并且对处理器的使用超出了其容量。

答案2

自 Windows 8 以来,任务管理器在 CPU 图表中不显示% Processor Time任何内容% Processor Utility

  • 处理器效用是指处理器正在完成的工作量,占处理器以正常性能运行且永不闲置时可完成的工作量的百分比。某些处理器的处理器效用可能会超过 100%。

添加此功能是为了反映 Intel Speedstep,其中 CPU 可以动态地超频或降频。如果您的 3 GHz CPU 降频至 700 MHz,那么您的运行速度会慢 4 倍,但由于 CPU 频率较低,您的工作负载需要更长的时间来执行。但如果您的系统上只有轻度 CPU 负载,这可能会更节能。但这仍然非常令人困惑,而且在我看来毫无意义。

在此处输入图片描述

上图显示了一个工作负载,它最多使用了 24 核机器中的 23 个核。任务管理器显示了 100% 的上限值,以免% Processor Utility让用户感到困惑,尽管实际值将达到 151%。您和地球上的所有其他用户都希望看到的是,% Processor Utility但 MS 却不这么认为。

更多投诉链接在这里:

但 10 倍的倍数还是太多了,无法用这个来解释。你在机器上运行了一些 HyperV 工作负载吗?我不确定这些在所有性能计数器中是如何反映出来的。有些似乎包括来自虚拟机的 CPU,而其他则没有。

相关内容