现代CPU有几种称为C-state(C状态)的省电模式,也称为idle-state,比如C0,C1,C3,C7。当处在C0时,CPU使用运行状态(也就是active状态),其他非0状态都是睡眠状态,数字越大睡眠深度越深,唤醒时所消耗的时间也越久,而性能也会变差。

  在C0状态下,又存在几种称为P-state的状态,P-state主要控制频率和电源消耗,P-state数字越大,CPU的频率越低,电源消耗也就越小,通俗来说就是越省电,但性能也会下降。

  因此C-state和P-state的关系如图:

 wKioL1lmWneyWlDjAAAM1NeyKKQ865.png\"

 BIOS中,可以有设置C-state的地方,不同版本的BIOS会略有差别。在CLI命令行中,可以输入cpupower idle-info 来显示当前系统CPU所支持的C-state和每种状态下唤醒时的延迟。

 wKiom1lmXbfQEtUjAACoSTQ3D4M616.png\"

 CPU支持多种频率驱动程序,现代英特尔CPU默认使用intel_pstate驱动,该驱动可以有如下几种调节CPU频率(P-state)的Governors(调速器)。

 1 Performance:最大的频率使用,性能也达到最高,省电并非是此模式下的行为。

 2 Powersave:为了节省电源,降低了频率,严重影响了性能,即使进程非常繁忙也不会增加频率。

 通过使用cpupower frequency-info查看当前CPU使用的哪种频率驱动程序以及使用了哪种Governor。

 例如:

 wKiom1lmYFbg4nnmAAC2clDqp18462.png\"

 当希望切换成其他Governors时,可以使用命令 cpupower  frequency-set -g  GovernorsName。