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%
- 任务管理器的“性能”选项卡: CPU 利用率 19%
这一切加起来非常简单:进程资源管理器显示 cpu 的使用情况,没有任何比例,任务管理器和资源监视器显示当前 CPU 速度的比例(由于某种原因, “详细信息”选项卡除外)。任务管理器似乎无法显示超过 100% 的值,但资源监视器可以。
我又尝试了一次,现在在多个核心上进行了多个循环,因此差异会更加显着:
- 资源监视器:最大频率156%
- 156%的基础速度约为3.44GHz,这是我测试时的CPU速度。
- 进程资源管理器 CPU 使用率: 69.57%
- 这似乎是“真实”的 CPU 使用情况,没有任何规模。
- 资源监视器: CPU 使用率 109%
- 69.57 的 156% 是 108.52,可以四舍五入到 109。
- 任务管理器的“性能”选项卡: CPU 利用率 100%
所以我的问题是:
我正确吗?我试图在网络上寻找任何证据,但似乎没有人做过同样的数学计算。事实上,有些人对这种差异给出了相互矛盾的解释......我错过了什么吗?
我在此网站上发现了类似的问题,但他们的答案似乎不正确或与我的问题无关:
- 其中一些人解释说可能有来自其他用户的进程。这与这里无关,因为我看到所有用户的进程。
- 其他一些答案解释说 Process Explorer 和 Task Manager 有不同的轮询算法。这很好,但它不能解释同一任务管理器的“进程”和“详细信息”选项卡的不同值。
- 其他答案提到CPU使用率和CPU速度之间没有联系。据我了解,这是错误的,因为显然存在某种联系(如我上面所示),而这种联系实际上解释了这种差异。我错过了什么吗?
我读过的问题: