1. 前言
在这个世界中,任何系统的运转都需要能量。如树木依靠光能生长,如马儿依靠食物奔跑,如计算机系统依靠电能运行。而能量的获取是有成本的,因此如果能在保证系统运转的基础上,尽量节省对能量的消耗,就会大大提升该系统的生存竞争力。这方面,大自然已经做的很好了,如植物的落叶,如动物的冬眠,等等。而在计算机的世界里(这里以运行Linux OS的嵌入式系统为例),称作电源管理(Power Management)。
通俗的讲,电源管理就是:“想让马儿跑,不想马吃草”。不过,从能量守恒的角度,想让马儿跑多快、跑多久,就一定要让它吃相应数量的草。那么我们就退而求其次:“只在需要马儿跑时,才让它吃草”。这就是电源管理的核心思想。那方法呢?可以这样:
方法1:不需要马儿跑时,把它杀掉,这样就不吃草了。需要马儿跑时,再养一匹。
在现实世界中,除了傻瓜,应该没人使用这种方法。因为重新养一匹马需要时间----我哪里等得及,需要草----有可能比养一匹闲马需要的更多。
方法2:不需要马儿跑时,让它睡觉,不能睁眼,不能动,不能叫。
先不讲马儿是否愿意一直睡觉,这种方法只能减少马儿吃草的数量,因为它的心脏还在跳动、血液还在流通,这些也消耗能量。不过还好,需要马儿跑时,应该不需要等太久了。
方法3:不是说心脏跳动、血液流通也消耗能量吗?那把这些也停下来好了,能省多少是多少嘛。
确实是好方法,不多得先去问问兽医,能不能搞定。不过以现在的医学水平,估计实现不了啊。
在计算机世界中,上面的方法是再平常不过的了,而且控制的远比这些精细。因为计算机是人类设计出来的,而马儿却是经上帝之手。不过通过马儿的例子,我们可以总结出电源管理的基本行为:
a, 实时的关闭暂时不使用的部分(可称作“工作状态到非工作状态的转移”)。例如手机在口袋时,屏幕没必要亮。
b, 当需要重新使用那些已关闭部分时(可称作“非工作状态到工作状态的转移”),不能有太长时间的等待,且转移过程不能消耗太多的能量。上面的方法1就是一个反面教材,但在计算机的世界里,情况会好很多。
2. Linux电源管理的组成
电源管理(Power Management)在Linux Kernel中,是一个比较庞大的子系统,涉及到供电(Power Supply)、充电(Charger)、时钟(Clock)、频率(Frequency)、电压(Voltage)、睡眠/唤醒(Suspend/Resume)等方方面面(如下图),蜗蜗会在Linux电源管理系列文章中,对它们一一讲述。
注1:该图片只是一个示意图,并没有划分软件层次,因此模块之间的关系不一定是真正的关系。
« Linux电源管理(2)_Generic PM之基本概念和软件架构 | Process Creation(二)»
评论:
吴兵
2018-02-01 11:30
"Runtime PM是Linux Kernel亲生的运行时电源管理机制,Wakelock是由Android提出的机制。这两种机制的目的是一样的,因此只需要支持一种即可。另外,由于Wakelock机制路子太野了,饱受Linux社区的鄙视,因此我们不会对该机制进行太多的描述。"是不是android 用户层用Wakelock机制,而内核层kernel用Runtime PM机制啊?
GrayMonkey
2017-11-12 00:55
膜拜大佬,早找到你的文章就好了,Android开发一枚,一直对底层的电源管理存有疑问
周末花裤衩
2017-09-21 20:07
试试还能留言吗
wolf
2016-07-18 13:20
LINUX 系统息屏后长时间不操作,屏幕点不亮,可是其他的一切正常运行,这个是怎么回事呢,我看到你回复别人的帖子是要重新设置背光,可是重新设置背光也不管用!怎么回事呢?谢谢
这个帖子的问题和我的很像,有人说除了设置背光还有别的设置,但是具体的没有给出,怎么设置屏幕的电源呢
wowo
2016-07-18 13:32
@wolf:可以按照如下思路去查:
1。确认是背光没开,还是lcd没开,还是没有应用送显示数据。
2。如果是背光,检查power、pwm等。
3。如果lcd没开,检查对应的驱动。
4。等等
vv小蛋
2016-07-14 16:40
感觉到了一股禅意,或许做任何事情都是在修道吧
wowo
2016-07-14 17:27
@vv小蛋:哈哈,禅意,听着不错。
修道改为修行就更好了。
franc
2016-05-04 15:09
无法登录
wowo
2016-05-04 18:28
@franc:博客和论坛的账号不能通用,另外建议大家不要登录博客了(只有发文章的时候才需要)。
xiaogaod325
2015-09-18 11:47
有点意思
zxqhbd
2015-09-10 17:10
很好的讲解,不小心进入这个博客就被吸引了,怎么注册不了啊
wowo
2015-09-10 17:23
@zxqhbd:抱歉,网站php代码有问题,注册用户超过255就注册不了了,我还没来得及研究一下怎么修复~~
zxqhbd
2015-09-10 20:50
@wowo:期待加入!
qkhhyga
2015-03-11 15:05
@wowo:坐等cpufreq动态调频的分析介绍。。。
wowo
2015-03-13 17:05
@qkhhyga:时机还未到啊,最低要等到regulator的介绍完,才能开始cpufreq。
Daniel Shieh
2015-02-28 20:25
现在拿到一个新的板子,想要实现电源的power on和off,以及一级,二级低功耗,deep sleep,总体上说应该从哪里下手呢?
Daniel Shieh
2015-02-28 20:26
@Daniel Shieh:希望楼主能抽空指点一下,不知道这些点从哪下手。
wowo
2015-03-01 21:27
|