Answers:
目前,我对此没有明确的答案,但是很明显,Linux内核正在使用一些节能机制。
但是,经过一些快速研究,我很快意识到最新的Linux内核利用了称为ACPI的功能,该功能是Advanced Configuration and Power Interface的首字母缩写。
高级配置和电源接口(ACPI)规范为操作系统的设备配置和电源管理提供了开放标准。
通过维基百科。
基本上,ACPI允许控制不同的CPU状态,以实现更好的电源管理。
CPU C状态(电源管理)
基本上,关于CPU“ C状态”,您可能不必担心。这些由内核+ ACPI系统自动控制,同时考虑当前系统负载。(注意:请查看下面有关AMD Athlon和Duron处理器的说明)。较新的(2.6+)内核中的ACPI代码会在空闲时间自动使CPU进入睡眠状态(注意:这不会更改CPU频率。这由“ P状态”控制-参见下文)。
唯一要意识到的是,当CPU暂时停止时,您的系统是完全“有意识的”-您不会注意到很大的不同。但是,省电效果可观。只需将其视为空闲状态即可让您的CPU承受数千次“小睡”。
CPU-T状态(节流)
这些非常类似于“ C状态”(使用相同的HLT指令),但是区别在于节流是“由您强制”(就像每4个周期被强制为睡眠周期,而不是“ C状态” ”以上,由系统负载自动确定)。请注意,频率尚未更改...请参见下面的“ P状态”。
CPU-P状态(性能)
如今,许多处理器(尤其是笔记本电脑)的时钟频率实际上可能会“实时”降低。这样可以节省大量电量。英特尔将其称为“ SpeedStep”,而AMD将其称为“ Cool'n'Quiet”或“ PowerNow”。更一般而言,这些状态称为“ P状态”。几乎可以肯定,您必须进入BIOS并首先为CPU启用此功能!
**一些消费基准:**
上述CPU状态可节省多少电量?以下数据摘自AMD网站。考虑具有1 MB二级缓存的AMD 64 3400 + / 2200MHz。顺便说一句,当我在这里的时候,让我抱怨AMD的命名约定。数字3400+并不意味着杰克深蹲。这只是AMD的说法,即该处理器“看起来像”以3400MHz运行的Intel Pentium-4。我想这是他们不失去市场份额的方式。这是P和T状态的功耗值(C状态与T状态是同一HLT指令):
[EDIT#1]:到处乱逛,我也在一些论坛中找到了其他帖子(OpenSuse论坛似乎与您要寻找的东西相关),发现对于Linux来说,这与Windows和Windows并没有太大关系特别是在游戏中。我还在RedHat邮件列表中的两封邮件(第一封邮件和第二封邮件[follow-up])中挖掘了一些相关的信息。我目前正在研究其中的信息。
[编辑#2]:我已经对该问题进行了一些研究,并且我越来越确定Linux中没有核心的停放机制,除非有我不知道的ACPI。一些有趣的发现是一些软件,它们允许直接操纵cpu及其上运行的进程,例如cpuset,numactl和最后但并非最不重要的CPUfreq。将继续我的研究。
有一篇文章在这里提的是,核心停车涉及内核设置为提前C状态以节省电力。c状态由halt指令设置。正如NlightNFotis提到的那样,这是使用Linux对ACPI的支持来完成的。
使用Intel编写的powertop
(sudo apt-get install powertop
)开源程序,您也许可以获得有关linux内核进入状态的更多信息。如果您的硬件支持各种c状态,它应该能够告诉您Ubuntu内核将这些时间置于这些低功耗状态的时间百分比。见下文。c状态的数字越高,节省的功率就越多。
它还提供了更多信息。
同样,像Windows一样,有工作要做时,Linux可以根据需求量,节省功率的需求等来调整内核运行的频率。
我的笔记本电脑不支持c状态,尽管可以挂起。我们在Atom处理器上拥有的一点Acer确实支持它们,如下所示。