CPU使用率如何最高可达50%但不能有效使用一个CPU?

时间:2017-01-02 09:37:37

标签: java cpu cpu-usage single-threaded

假设我有一个与单CPU线程绑定的java程序。从下图的左侧 - 我们可以看到两个CPU中的一个被最大化。 (它暂时保持这一立场)。

但是右边的图表显示不同的CPU正在执行不同的活动而一个未被阻止。

enter image description here

我的问题是: CPU使用率如何最高可达50%但不能有效使用一个CPU?

1 个答案:

答案 0 :(得分:1)

即使您的进程仅使用一个核心/ 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