多核CPU能量需求和负载平衡

多核CPU能量需求和负载平衡

我对多核 CPU 系统的负载平衡很感兴趣。如果您使用 1 个多核 CPU,那么平衡多个核上的负载是否更节能,还是尝试填满单个核并使其他核处于闲置状态。
基本假设是两种情况下完成的工作量完全相同,并且时间也相同。那么,在同一 CPU 中使用 4 个核,每个核负载 25%,还是使用 1 个核,负载 100%,哪个更有效率?
我认为 1 个核,负载 100%,应该更有效率,但我可能错了,所以我正在寻找有关此问题的严肃答案(不猜测)。

答案1

我认为,在一般情况下,这个问题根本无法回答。

我的办公桌上有一台支持 TurboBoost 的新型 Core i7-980x 6 核 CPU。如果您在这台机器上加载单个内核,它将提高该内核的时钟速度,从而增加 CPU 的功耗,因此这将带来巨大的差异。这款 CPU 以及其他更现代的 CPU 可以部分关闭不活动内核的电源,从而节省更多电量。但旧款 CPU 则不能。

请记住,使用单核处理的工作必然与使用多核处理的工作不同。如果将负载分散到多个核心上,您会发现单个核心将花费大量额外时间来执行昂贵的上下文切换,并且您的性能将受到影响。

无论如何,这个问题有太多变量,无法真正回答。人们可以不断地讨论不同类型的负载,任何试图通过基准测试来获得答案的人最终都会(可能无意中)做出不适用于其他用例的苹果和橘子比较。

哦,还有一件事。大多数人可能会引用效率这个词力量。你不会想落入这个陷阱。 由于处理负载的时间必然会有所不同,具体取决于负载的平衡方式,因此必须将结果随时间进行积分,以找到净负载量活力用于完成工作以得出可信的结果。

答案2

我今天做了一些测试计算机(Intel C2D T8100)并使用来自 lunatics installer 0.36 的优化 SETI@Home 应用程序。我使用M$ 焦耳计计算功耗。我测量了三次功耗。首先,我让 BOINC 占用 100% 的内核和 100% 的 CPU 时间,并让它运行一小时。处理器消耗 20W,任务管理器中的 CPU 时间图在 100% 时保持平稳。我的电脑的平均功耗为 45.05W,并且还在上升,在我停止测试时,功耗为 46.18W。

在第二次测试中,我将 BOINC 设置为占用 50% 的可用内核和 100% 的 CPU 时间,并让其运行一小时。CPU 功耗在 12W 到 13W 之间变化。平均功耗为 42.72W,并且还在上升。在我停止测试时,功耗为 44W。为了使目标内核的 CPU 时间图呈直线,我将程序的亲和性设置为一个内核,并将优先级设置为高。其他内核的图表显示 CPU 时间使用率略高于正常水平。

对于第三个测试,我将 BOINC 设置为使用 100% 的可用核心和 50% 的 CPU 时间。功耗在 5W 和 17W 之间大幅波动。测试一小时后的平均功耗为 39.96W,并且正在下降。CPU 时间图如下所示/\/\/\/\/\/\/\/\/\/\/\/\/\。由于 BOINC 使用的时间单位大小,峰值是可以预料的。

因此我认为,两个核心半负荷运行比一个核心满负荷运行更有效率。

是的,我知道进行正确的研究需要更多的样本,但目前我没有足够的计算机或时间来进行正确的统计。

答案3

您的问题的答案有两个方面:如果您运行的是高度可矢量化的并行代码,那么在多个核心上平衡负载总是更有效率。核心将以较低的负载运行,释放的热量比被推到极限的单个核心少。另一方面,如果您的代码不可并行化,那么在多个核心上运行它会效率较低,因为由于代码之间的依赖关系会发生大量缓存未命中。这可能仍然会产生较少的热量,但与在单个核心上运行相比,完成任务肯定会花费更长的时间。

答案4

您所问的问题有太多未知数。您问的是时间效率还是能源效率?非并行代码还是并行代码?单一任务还是普通桌面多任务?如果您每月的计算机电费超过 1000 美元,那么可能值得担心。否则您无法节省足够的钱来解决这个问题。谈论起来很有趣 - 但如果您遇到了严重的问题,最好的答案是:尝试一些不同的东西,看看哪种方法有效。

相关内容