gpt4 book ai didi

java - CPU使用率最高达到50%,却无法有效利用一个CPU,怎么办?

转载 作者:行者123 更新时间:2023-12-01 09:04:10 25 4
gpt4 key购买 nike

假设我有一个线程绑定(bind)到单 CPU 的 java 程序。从下图左侧 - 我们可以看到两个 CPU 之一已达到极限。 (这个位置已经有一段时间了)。

但右图显示不同的 CPU 正在执行不同的 Activity ,并且其中一个没有被阻塞。

enter image description here

我的问题是:CPU 使用率最大达到 50% 却无法有效利用一个 CPU?

最佳答案

即使您的进程仅使用一个核心/CPU,Windows 也会尝试将负载分配到所有可用核心上。这种情况发生得如此之快/频繁,以至于看起来没有一个核心曾经 100% 使用过。

如果您告诉 Windows 仅使用一个核心,您将看到该核心达到 100%。您可以通过打开 taskmgr 并右键单击进程并选择 affinity 或在启动应用程序时执行此操作。

我可以向您展示如何使用 7z 完成此操作,因为无论您使用哪个(单核)应用程序,效果都是相同的。

start/affinity 0x1 7z b -mmt1 确实启动 7z 并使用 /affinity 0x1 将第一个核心指定为唯一的核心。 (b -mmt1 用于将 7-zip 置于仅使用一个线程的基准模式)如果您定期启动该进程,您可以从 taskmgr 查看/更改关联性。 affinity of a process

CPU 图表在这两种情况下都将显示 100%:

100% on a single core

以上所有屏幕截图均来自德语 Windows 10,这是在英语 Windows 7 上的样子: enter image description here

关于java - CPU使用率最高达到50%,却无法有效利用一个CPU,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com