Linux 电源管理比较复杂,牵涉到许多层面,例如系统级的休眠、频率电压转换、系统空余时的解决及其每一个设备推动针对系统休眠的大力支持和每一个设备的运作时电源管理,可以说和系统中的每一个设备推动也都紧密相连。
在Linux核心上面有如下所示的架构适用:
1. CPU 在操作时依据系统负荷开展动态电压和频率转换的CPUFreq ;2. CPU 在系统空余时依据空余的状况开展功耗低方式的CPUIdle ;
3. 多核系统下CPU 的热插拔适用 ;
4. 系统和设备针对延迟时间的尤其要求而提交申请的PMQoS,它会功能于CPUIdle 的实际对策 ;
5. 设备推动对于系统Suspend to RAM/Disk 的一系列通道函数公式 ;
6. SoC 进到suspend 情况、SDRAM 自更新的通道 ;
7. 设备的runtime(运作时)动态电源管理,依据应用状况动态电源开关设备 ;
8. 最底层的钟表、稳压电源、频率/电压表(OPP 控制模块进行)支撑点;
Linux电源管理中关键采用的技术性包含:
1、CPUFreq : 即DVFS(Dynamic voltage and frequency scaling),即动态电压频率调节。在系统运作时依据系统负荷动态调整;
2、DEVFreq:CPUFreq只对于CPU做动态电压频率调整,而devfreq可以对设备,如DRAM,GPU等做动态电压频率调整;
3、CPUIdle:CPU在系统空余时依据空余的状况开展功耗低方式,例如C0--C3四个情况使用不一样的功耗低对策;
4、CPUHotplug:多核系统下CPU的热插拔适用;
5、PM QOS:关键功能于cpuidle的实际对策,是对于系统和设备针对延迟时间的尤其要求而提起的;
6、SUSPEND:关键有suspend to ram和suspend to disk二种,suspend to ram主要是挂起来各设备,并使dram进到自更新,而suspend to disk就索性把dram也关闭,立即把情况储存到disk;
7、RUNTIME PM:设备的runtime(运作时)动态电源管理,依据应用状况动态电源开关设备;
8、Regulator:用以调整CPU等控制模块的电压和电流;
9、OPP:可以使SOCs或是Devices一切正常作业的电压和频率组成。核心给予这一个Layer,是因为在许多的电压和频率组成中,挑选出一些相对性稳定的组成,进而使事儿越来越更加简易一些;
10、Ther ** l:温度控制管理方法。
电源管理有关源代码在核心树中关键遍布于:
kernel/power/ *
drivers/power/
drivers/base/power/*
drivers/cpuidle/*
drivers/cpufreq/*
drivers/devfreq/*
include/linux/power_supply.h
include/linux/cpuidle.h
include/linux/cpufreq.h
include/linux/cpu_pm.h
include/linux/device.h
include/linux/pm.h
include/linux/pm do ** in.h
include/linux/pm runtime.h
include/linux/pm wakeup.h
include/linux/suspend.h