Linux:CPU内核关闭而不是睡眠状态


10

在Linux中,您可以通过echo 0> / sys / devices / system / cpu / cpu1 / online来关闭CPU内核(或物理CPU)假设硬件完全关闭了CPU并切断了电源,那么最好禁用它完全依赖内核,而不是依赖处理器的各种睡眠状态?

为了说明该原理,我正在针对具有四个CPU的系统按照以下思路(伪代码)进行考虑:

if(loadavg > 3.00) echo 1 > /sys/devices/system/cpu/cpu3/online
if(loadavg < 3.00) echo 0 > /sys/devices/system/cpu/cpu3/online

if(loadavg > 2.00) echo 1 > /sys/devices/system/cpu/cpu2/online
if(loadavg < 2.00) echo 0 > /sys/devices/system/cpu/cpu2/online

if(loadavg > 1.00) echo 1 > /sys/devices/system/cpu/cpu1/online
if(loadavg < 1.00) echo 0 > /sys/devices/system/cpu/cpu1/online

Answers:


6

设置CPU内核的在线状态只是告诉进程调度程序不要将该内核用于任何进程。在硬件级别上,核心只是闲置(正在执行NOP),但仍处于供电状态。虽然这可以节省电量,但​​是却无法节省使计算机进入睡眠状态的电量。为什么?

好了,您的主板,CPU和GPU 仍在运行!当您使计算机进入睡眠状态时,所有这些组件实际上都没有供电,并且仅使用了足以使RAM保持活动状态的电源(大约几瓦)。

再次重申,虽然我同意这样做可以节省电能,但即使关闭一半的CPU内核也可以使处理器的功耗减半(尽管实际上,由于这些内核仍需要闲置,您可能只节省30%到40%),但是这远非系统中使用电源的唯一组件。即使这样做可以节省50W的功率,您整个计算机仍在消耗比睡眠模式下仅瓦特更多的功率


最后的想法:虽然我同意这在实践中是个好主意,但这也是为什么许多CPU制造商都包括动态频率缩放(英特尔的“ Speed Step”)以及对Linux的支持的原因。通过根据需要更适当地设置这些频率,可能会产生更好的总体性能以及电源效率。这可以在硬件(BIOS设置)和软件中完成(Linux内核允许您修改某些CPU参数,有关详细信息,请参见我上面发布的链接或此网站)。

这是可行的,因为以下是CMOS电路功耗的通用公式:

P = CV 2 f,其中C =电容(假定为固定),V =电压,f =频率。

因此,将频率除以2将节省原始功耗的一半。将电压除以2可将功耗降低至原来的1/4。


至少在x86 / amd64兼容处理器上,我认为如果可能的话,HLT指令在CPU上比NOP更容易。我还指的是各种睡眠状态(或正确的处理器状态C0-C3(ACPI))。另外,我还考虑了那些始终无法在整个系统中运行的系统。在那种情况下,我很好奇硬件是否会真正切断CPU的电源,以及是否在某些配置中完全实现了这一功能。感谢您的回答,但我会让问题再开放一点。
Waxhead 2011年

@Waxhead一旦切断CPU的电源,即使其他硬件仍在供电,整个计算机在逻辑上也会“关闭”(并且只能通过外部中断重新打开)。同样,使用HLT而不是可能是正确的NOP,但这与中断的使用有关(这是使处理器退出暂停状态的方法)。大多数处理器没有降低功耗,而是动态改变时钟速度和电压(在我的答案中增加了等式)。
突破

我对此进行了更多研究。事实证明,Linux实际上支持CPU的热插拔。在这种情况下,如果BIOS /主板支持,您实际上可以关闭CPU并更换它们,例如,在系统运行时将CPU从其插槽中拔出并更换。参考:cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpu如果我没有记错的话,如果BIOS /主板支持的话,这会切断CPU的电源。
Waxhead

@Breakthrough感谢您的精彩帖子。您能否提供一些参考文档,详细说明我们如何将cpu置于低功耗状态(无需重新启动系统),并在需要时可以将其取回
iDebD_gh

@Breakthrough“核心只是闲置(正在执行NOP),”当我们在特定的cpu核心上进行脱机时,它会从“ / proc / interrupts”中消失。怎么说Core正在处理NOP操作?
iDebD_gh
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.