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


10

我对多核CPU系统的负载平衡感兴趣。如果您将1个CPU与多个内核一起使用,则平衡多个内核上的负载还是尝试填充单个内核并使其他内核保持空闲状态是否更节能?
基本假设是,两种情况下同时完成的工作量完全相同。因此,在同一个CPU中使用4个内核(每个内核负载25%)或使用1个内核(100%负载内核)效率更高。
我认为1个100%负载的内核应该更有效,但是由于我可能错了,我一直在寻找有关此问题的认真答案(没有猜测)。


+1非常有趣的问题!以下是tomshardware.com/reviews/truth-pc-power-consumption,1707.html tomshardware.com/reviews/intel-cpu-power-consumption,1750.html的一些链接,但它们并没有真正解决您的问题。我有C2D T8100,在这几天中,我将做一些测试,以查看哪种类型的负载产生更多的热量。
AndrejaKo 2010年

25%的4核绝对比100%的1核散热更好。
Brian Knoblauch

如果在各个用例中工作量是恒定的,则将所有负载堆积在同一个内核上将使其性能降低-有效地花费更多的时间和精力。当相同的工作需要更长的时间才能完成时,您可能会失去瞬时节能效果。(+1,令人深思的问题)
尼克,2010年

@Brian同意使用更多的磁芯可以散发热量,但是总共产生的热量是否相同?
凯文·潘科

AMD已宣布CPU能够关闭未使用的内核,从而允许运行中的内核以更高的时钟速度运行
b0fh 2010年

Answers:


6

IMO在一般情况下根本无法回答这个问题。

在我的办公桌上,我拥有这些新型的酷睿i7-980x 6核TurboBoost支持的CPU之一。如果在此计算机上加载单个内核,它将提高该内核的时钟速度,从而增加CPU的功耗,因此将产生巨大的差异。该CPU以及其他更现代的CPU可以部分关闭不活动的内核的电源,从而节省更多功率。在较旧的CPU型号上并非如此。

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

无论如何,这个问题有太多的变量无法真正回答。人们可能会不断研究不同类型的负载,而任何试图进行基准测试以获得答案的人最终(可能是无意间)进行了苹果到橙色的比较,而这种比较不适用于其他用例。

哦,还有一件事。大多数人可能会以功率来引用效率。您不想陷入这个陷阱。 由于根据负载的平衡方式,处理负载的时间必定会有所不同,因此,您必须随时间对结果进行积分,以找到完成作业所需的净能量,以得出可靠的结果。


哈哈,你怎么知道?Hokie Engineering,宝贝!
大卫·马克尔

一看就知道。去Mizzou
布袋

等一下。我错了。有一个人谁可以运行一些基准,给我们在一般情况下一个答案:gizmodo.com/5598885/...
大卫·马克尔

4

我今天使用台计算机(Intel C2D T8100)和来自lunatics安装程序0.36的优化SETI @ Home应用程序进行了一些测试。我使用M $ Joulmeter来计算功耗。我测量了消耗树的时间。首先,我让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使用的时间单位大小,预计会出现峰值。

因此,我相信使用两个半负载运行的内核比在一个满负载运行的内核效率更高。

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


1
现在很高兴找到与其他操作系统相同的焦耳计,然后我可以测试一下我得到的一些设备……
private_meta 2010年

这是供GNU / Linux笔记本电脑使用的东西thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo 2010年

这是另一个有趣的链接:www.lesswatts.org/和另一个susegeek.com/general / ...和另一个publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0 / ...显然,人们不相信ACPI读数并且被说服了外部仪表是必要的,因此很少有链接讨论如何使用外部仪表。对于其他操作系统,我还不够1337,无法提供任何帮助。
AndrejaKo 2010年

谢谢。外部仪表的问题在于它们测量所有功耗,而不仅仅是测量功率。虽然整个功耗也很重要(例如算法广泛使用硬盘驱动器)。如果ACPI读数似乎不可信,则您还必须使用Windows计算机的外部读数才能进行比较:-/
private_meta 2010年

但是,ACPI读数总比没有读数要好,对吗?另外,通过使用对CPU影响最大的测试,我们可以确定基本功耗,并查看它随负载增加多少。通过这种方式,我们可以知道大多数消耗变化是来自CPU负载。以后我可能会用电压表和电流表进行更多测试。看到ACPI测量值与实际仪器测量值如何进行比较真的很有趣。太糟糕了,这种比较不能一概而论。
AndrejaKo 2010年

0

您的问题的答案是双重的:如果您正在运行高度可矢量化的并行代码,那么平衡多个内核上的负载总是更有效的。磁芯将在较低的负载下运行,比单个磁芯达到极限时释放的热量更少。另一方面,如果您的代码不可并行化,则在多个内核上运行它的效率会降低,原因是由于跨代码的依赖关系而导致的高速缓存未命中数。这可能仍会产生较少的热量,但是与在单个内核上运行相比,完成任务肯定会花费更长的时间。


1
但是,如果您具有不可并行化的代码,那么如何在多个内核上运行?
AndrejaKo 2010年

您认为,将4个芯子减少到25%所产生的热量要比将1个芯子增加到100%产生的热量少(并产生更多的能量损失)。
private_meta 2010年

@AndrejaKo如果有多个进程或线程,则很容易将它们分散到各个内核中。
Emish

0

您所提出的问题有太多未知数。您是在询问时间效率还是能源效率?非并行代码还是并行代码?单项工作还是普通桌面多任务处理?如果您每月要为计算机支付超过1000美元的电费,则值得一两个担心。否则,您将无法节省足够的钱来解决问题。讨论很有趣-但是,如果您遇到严重问题,最好的答案是:尝试一些不同的事情,看看有什么用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.