【发布时间】:2014-02-06 20:34:31
【问题描述】:
我的单线程程序仅使用 25% 的 CPU 和 2 核 (intel i5-3210M)。为什么不是 50%(一个核心)?程序正在使用 windows 7 64 的 macbook pro 上进行测试。我认为问题是超线程,因为这个程序只使用一个逻辑核心(25% 的 cpu 功率)。如何为我的程序提供更多的 CPU 能力? 这对我来说很重要,因为这个程序可以处理大量数据,完成计算大约需要 30 个小时。
【问题讨论】:
-
"我怎样才能给我的程序更多的 CPU 能力?"您可能需要分享有关您的程序的更多信息,例如什么语言,到目前为止你所拥有的工作示例 - 我们不需要你的所有逻辑,只需要了解它是如何工作的。
-
您的程序并没有真正使用 25% 的可用处理能力,因为您没有四个物理内核;你有两个物理核心,两个“虚拟”核心(由于启用了超线程)。因此,CPU 使用率估计会出现偏差;您使用的任何程序都可能 报告 25% 的 CPU 使用率,但实际上接近 50%(您使用的是 2 个内核中的 1 个,而不是 4 个内核中的 1 个)。启用超线程不会神奇地使您的计算潜力翻倍。出于兼容性原因,“超线程”显示为离散 CPU,而不是因为您可以执行双倍的工作负载。请记住这一点。
-
当然,我在一小部分模型数据上测试了我的程序。并且程序工作正常。现在我正在测试算法然后编码。我知道最好的方法是使用多线程,但这是另一个问题。
-
@Mike Strobel 谢谢你的回答!我知道“超线程不会神奇地使您的计算潜力翻倍”,但我认为它会将单线程应用程序的计算潜力降低两倍(降低到 25% 而不是 50%)。
-
@maxibystro 它没有那样做;这就是我的观点。这些使用估计是虚假的。他们将 25% 的每个分配给两个计算潜力相对较小的“虚拟”CPU。仅仅因为任务管理器这样说,您并没有使用 1/4 的计算潜力。你真的使用了接近 1/2 (50%)。忽略数字。如果它让您感觉更好,请禁用超线程,以便它说您正在使用 50%,但这不会产生太大影响。
标签: performance cpu cpu-usage