其实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、Thermal:温控管理。
电源管理相关源码在内核树中主要分布于:
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 domain.h
include/linux/pm runtime.h
include/linux/pm wakeup.h
include/linux/suspend.h
使用笔记本的话,可能知道 Linux 系统的电源管理做得很不好。虽然有 TLP、 Laptop Mode Tools 和 powertop 这些工具来辅助减少电量消耗,但跟 Windows 和 Mac OS 系统比较起来,电池的整个使用周期还是不尽如意。
此外,还有一种降低功耗的办法就是限制CPU的频率。这是可行的,然而却需要编写很复杂的终端命令来设置,所以使用起来不太方便。幸好,有一款名为CPUPowerManager的GNOME扩展插件,可以很容易的就设置和管理你的CPU主频。
GNOME桌面系统中,CPUPowerManager使用名为intel_pstate的频率调整驱动程序(几乎所有的IntelCPU都支持)来控制和管理CPU主频。
扩展资料:
CPUPowerManager
查看CPU主频:显然,你可以通过这个提示窗口看到CPU的当前运行频率。
设置最大、最小主频:使用此扩展,你可以根据列出的最大、最小频率百分比进度条来分别设置其频率限制。一旦设置,CPU将会严格按照此设置范围运行。
开/关TurboBoost:这是我最喜欢的功能特性。大多数IntelCPU都有“TurboBoost”特性为了提高额外性能,其中的一个内核为自动进行超频。
此功能虽然可以使系统获得更高的性能,但也大大增加功耗。所以,如果不做CPU密集运行的话,为节约电能,最好关闭TurboBoost功能。事实上,在我电脑上,我大部分时间是把TurboBoost关闭的。
生成配置文件:可以生成最大和最小频率的配置文件,就可以很轻松打开/关闭,而不是每次手工调整设置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)