Red Hat Training

A Red Hat training course is available for RHEL 8

17.2. CPU 空闲状态

具有 x86 架构的 CPU 支持各种状态,比如,会停用 CPU 的部分或使用较低性能设置(称为 C-states)。

通过此状态,您可以通过部分取消没有使用的 CPU 来省电。不需要配置 C-state,这与需要管理器的 P-states 不同,一些设置可能会避免不必要的电源或性能问题。C-states 是从 C0 开始增长的值,数值越大代表 CPU 功能越低,节省效果更好。给定数量的 C-states 在处理器之间大体相似,但在不同处理器系列间特定功能集的具体细节可能会有所不同。C-states 0-3 的定义如下:

C0
在这个状态中,CPU 正常运行,根本不会处于空闲状态。
C1, Halt
在这一状态中,处理器没有执行任何指令,但通常不处于低电源状态。CPU 可能会在实际并没有延迟的情况下继续处理。提供 C-states 的所有处理器都需要支持此状态。Pentium 4 处理器支持名为 C1E 的改进的 C1 状态,它实际上是功耗更低的状态。
C2, Stop-Clock
在这个状态中,时钟会对此处理器进行冷冻处理,它会保留其寄存器和缓存的完整状态,因此在时钟再次启动它后,可立即开始进行处理。这是一个可选状态。
C3, Sleep
在这种状态下,处理器进入睡眠状态,不需要保持其缓存最新状态。因此,从这个状态开始的时间要长于 C2 状态。这是一个可选状态。

您可以使用以下命令查看 CPUidle 驱动程序的可用空闲状态和其他统计:

$ cpupower idle-info
CPUidle governor: menu
analyzing CPU 0:

Number of idle states: 9
Available idle states: POLL C1 C1E C3 C6 C7s C8 C9 C10
[...]

具有 "Nehalem" 微架构的 Intel CPU 具有 C6 状态,可将 CPU 的供电减少为 0,但通常会降低 80% 到 90% 之间的功耗。Red Hat Enterprise Linux 8 中的内核包括这个新 C-state 的优化。

其他资源

  • cpupower (1)cpupower-idle (1) man page