CPU使用率如何达到50%,但不能有效使用一个CPU?
问题描述:
假设我有一个线程绑定到一个CPU的java程序。从下图左侧 - 我们可以看到两个CPU中的一个被刷新了。 (它已经占据了这个位置一段时间)。CPU使用率如何达到50%,但不能有效使用一个CPU?
但是右边的图表显示不同的CPU正在做不同的活动,而且一个没有被阻止。
我的问题是:如何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中查看/更改关联。
的CPU图表将在这两种情况下显示出100%:
问题“如何有效地使用CPU”没有直接的答案(有数百万答案)。 –
这可能是超线程你的看到... MS适用每个核心执行2线程 – Jonathan
这是什么CPU? – Malt