任务管理器和 Process Explorer 在 CPU 利用率方面的差异

YAY*_*est 7 performance cpu-usage

当我打开任务管理器和进程资源管理器时,我可以看到它们呈现不同的 CPU 利用率值。此外,同一任务管理器中的“进程”“详细信息”选项卡指示不同的 CPU 利用率值。我想了解为什么,所以我尝试做一些研究。

我猜测差异是因为某些性能监视器在计算中包含 CPU 速度,而其他监视器则不包含。为了测试这个理论,我在 python 中创建了一个简单的无限循环,它不使用 IO: while True: pass。这会耗尽正在运行的核心,因为它根本不使用 IO,因此核心没有闲置时间。

我运行循环查看结果:

  • 进程资源管理器: python.exe 8.34%
  • 任务管理器的“详细信息”选项卡: python.exe 8%
  • 资源监控:最大频率180%
  • 任务管理器的“进程”选项卡: python.exe 16.8%
  • 进程资源管理器 CPU 使用率: 10.28%
  • 资源监视器: CPU 使用率 19%
  • 任务管理器的“性能”选项卡: CPU 利用率 19%

现在让我们做一些数学计算并解释这些值。我使用 12 个逻辑处理器,基本速度为 2.21GHz,所以结果是:

  • 进程资源管理器: python.exe 8.34%
    • 我的 python 程序应该耗尽一个核心。我的系统有 12 个逻辑核心,因此 100/12 约为 8.34。
  • 任务管理器的“详细信息”选项卡: python.exe 8%
    • 与之前的计算相同,但任务管理器将结果四舍五入为 8%。
  • 资源监控:最大频率180%
    • 180%的基础速度约为3.98GHz,这是我测试时的CPU速度。
  • 任务管理器的“进程”选项卡: python.exe 16.6%
    • 8.34 的 180% 是 15,这不完全是 16.6,但非常接近......
  • 进程资源管理器 CPU 使用率: 10.28%
    • 这似乎是“真实”的 CPU 使用情况,没有任何规模。
  • 资源监视器: CPU 使用率 19%
    • 10.28 的 180% 是 18.5,非常接近
  • 任务管理器的“性能”选项卡: CPU 利用率 19%
    • 与任务管理器“性能”选项卡中的相同

这一切加起来非常简单:进程资源管理器显示 cpu 的使用情况,没有任何比例,任务管理器和资源监视器显示当前 CPU 速度的比例(由于某种原因, “详细信息”选项卡除外)。任务管理器似乎无法显示超过 100% 的值,但资源监视器可以。

我又尝试了一次,现在在多个核心上进行了多个循环,因此差异会更加显着:

  • 资源监视器:最大频率156%
    • 156%的基础速度约为3.44GHz,这是我测试时的CPU速度。
  • 进程资源管理器 CPU 使用率: 69.57%
    • 这似乎是“真实”的 CPU 使用情况,没有任何规模。
  • 资源监视器: CPU 使用率 109%
    • 69.57 的 156% 是 108.52,可以四舍五入到 109。
  • 任务管理器的“性能”选项卡: CPU 利用率 100%
    • 与资源监视器相同,但上限为 100%

所以我的问题是:
我正确吗?我试图在网络上寻找任何证据,但似乎没有人做过同样的数学计算。事实上,有些人对这种差异给出了相互矛盾的解释......我错过了什么吗?


我在此网站上发现了类似的问题,但他们的答案似乎不正确或与我的问题无关:

  • 其中一些人解释说可能有来自其他用户的进程。这与这里无关,因为我看到所有用户的进程。
  • 其他一些答案解释说 Process Explorer 和 Task Manager 有不同的轮询算法。这很好,但它不能解释同一任务管理器的“进程”“详细信息”选项卡的不同值。
  • 其他答案提到CPU使用率和CPU速度之间没有联系。据我了解,这是错误的,因为显然存在某种联系(如我上面所示),而这种联系实际上解释了这种差异。我错过了什么吗?

我读过的问题: