在电源管理中,有两个非常重要的功能特性, cstate、pstate。
- pstate是指CPU忙时电源管理,为了省电会自动的根据CPU工作状态进行主频和电压的调节;
- cstate是指CPU闲时电源管理,通过在CPU不忙的时候关闭CPU内部元器件的电源是实现节能;
接下来我们简要介绍一下C-state。
为了在 CPU 空闲时能够更好的节省能源,可以使用命令让 CPU 进入低功耗模式。这种低功耗模式被统称为 C-state 或者 “C”模式。Cstate 有两个,分别是 Package Cstate 、Core Cstate。Package 代表物理 CPU,Core 代表物理 CPU 中的 Core。
C-state有几种模式,通过C+数字代表不同的模式,模式是从C0开始,目前已发展到了C6,C后面的数字越高,CPU睡眠越深,功耗越低,同时性能也越差。C 0 是全 CPU 工作模式,即 CPU 最大的工作状态;C 1 - C 3 是通过切断 CPU 内部时钟实现的功耗降低;C 4 - C 6 是通过降低 CPU 电压实现功耗降低;除了这几种状态,又出了 Enhangced 模式,这种模式下上述两种方案都采用。下面这张表格简单整理了各种模式的情况:
模式 | 名称 | 说明 |
C 0 | 运行态 | 所有 CPU 全部处于工作状态 |
C 1 | 挂起态 | 软件停止 CPU 内部的主要时钟,总线接口单元和 APIC 保持在工作状态 |
C 1E | 增强型挂起态 | 软件停止 CPU 内部的主要时钟,同时降低 CPU 频率电压,总线接口单元和 APIC 保持在工作状态 |
C 2 | 停止资源分配 | 硬件停止 CPU 内部的主要时钟,总线接口单元和 APIC 保持在工作状态 |
C 3 | 睡眠模式 | 停止所有 CPU 内部的时钟 |
C 4 | 深度睡眠模式 | 降低 CPU 频率电压 |
C 4E/C 5 | 增强型深度睡眠 | 进一步降低所有 CPU 的频率电压并且关闭缓存 |
C 6 | 深度断电 | 进一步降低所有 CPU 电压值,直至 0V |
在操作系统中可以使用CPUfreq实现频率的调节,目前共有5种governors,具体如下:
名称 | 描述 |
performance | 以效率为重,将 CPU 放在最高的频率上,不能进行频率动态调节 |
powersave | 以功耗为重,将 CPU 放在最低的频率上,不能进行频率动态调节 |
userspace | 以用户可配置为中心,操作系统将 CPU 频率调整策略交给用户,并对外提供一组接口 |
ondemand | 按需分配,CPU 频率根据任务状态进行调整,当没有任务时,CPU 频率调整为最低,当有任务来时 CPU 频率调到最高 |
conservative | 跟 ondemand 区别在于在此模式下 CPU 频率是平滑调整的,频率变化是渐变式的,并不完全追求 CPU 最大频率 |
以上是一些简要的介绍, 对于服务器的使用如何做到在更小的功耗下达成最大效率的工作完成是每个业务软件需要考虑的方向。