假设我有一个与单CPU线程绑定的java程序。从下图的左侧 - 我们可以看到两个CPU中的一个被最大化。 (它暂时保持这一立场)。
但是右边的图表显示不同的CPU正在执行不同的活动而一个未被阻止。
我的问题是: CPU使用率如何最高可达50%但不能有效使用一个CPU?
答案 0 :(得分:1)
即使您的进程仅使用一个核心/ CPU,Windows也会尝试在所有可用核心上分配负载。这种情况发生得非常快/经常看起来没有核心被用于100%。
如果你告诉Windows只使用一个核心,你会看到这个核心达到100%。您可以通过打开taskmgr
并右键单击该流程并选择affinity
或启动该应用程序来执行此操作。
我可以告诉你如何使用7z
完成此操作,因为使用哪个(单核)应用程序并不重要,效果是一样的。
start /affinity 0x1 7z b -mmt1
确实启动7z并使用/affinity 0x1
将第一个核心分配为唯一核心。 (b -mmt1
是将7-zip放入基准模式,只使用一个线程)
如果您定期启动该过程,则可以查看/更改taskmgr的亲和力。
CPU图表在两种情况下都会显示100%: