Linux系统 电源管理的组成

描述

Linux 电源管理的组成

电源管理(Power Management)在 Linux Kernel 中,是一个比较庞大的子系统,涉及到供电(PowerSupply)、充电(Charger)、时钟(Clock)、频率(Frequency)、电压(Voltage)、睡眠/唤醒(Suspend/Resume)等方方面面。

Linux

注1:该图片只是一个示意图,并没有划分软件层次,因此模块之间的关系不一定是真正的关系。

注2:Framework是一个中间层的软件,提供软件开发的框架。其目有三:一是屏蔽具体的实现细节,固定对上的接口,这样可以方便上层软件的开发和维护;二是尽可能抽象公共逻辑,并在Framework 内实现,以提高重用性、减少开发量;三是向下层提供一系列的回调函数(callbackfunction),下层软件可能面对差别较大的现实,但只要填充这些回调函数,即可完成所有逻辑,减小了开发的难度。

注3:Runtime PM 是 Linux Kernel 亲生的运行时电源管理机制,Wakelock 是由 Android
提出的机制。这两种机制的目的是一样的,因此只需要支持一种即可。另外,由于 Wakelock 机制路子太野了,饱受 Linux 社区的鄙视。

在对图片中的这些组件(也可以称作 Framework )进行详细描述之前,先在这里了解一下基本概念。

Power Supply,是一个供用户空间程序监控系统的供电状态(电池供电、USB 供电、AC供电等等)的 class。通俗的讲,它是一个Battery&Charger 驱动的 Framework

Clock Framework,Clock 驱动的 Framework,用于统一管理系统的时钟资源

Regulator Framework,Voltage/Current Regulator 驱动的 Framework。该驱动用于调节 CPU
等模块的电压和电流值

Dynamic Tick/Clock Event,在传统的 Linux Kernel 中,系统 Tick 是固定周期(如 10ms)的,因此每隔一个Tick,就会产生一个 Timer 中断。这会唤醒处于 Idle 或者 Sleep 状态的 CPU,而很多时候这种唤醒是没有意义的。因此新的 Kernel就提出了 Dynamic Tick 的概念,Tick 不再是周期性的,而是根据系统中定时器的情况,不规律的产生,这样可以减少很多无用的 Timer 中断。

CPU Idle,用于控制 CPU Idle 状态的 Framework

Generic PM,传统意义上的 Power Management,如Power Off、Suspend to RAM、Suspend to
Disk、Hibernate 等

Runtime PM and Wakelock,运行时的 Power Management,不再需要用户程序的干涉,由 Kernel统一调度,实时的关闭或打开设备,以便在使用性能和省电性能之间找到最佳的平衡

CPU Freq/Device Freq,用于实现 CPU 以及 Device 频率调整的 Framework

OPP(Operating Performance Point),是指可以使 SOCs 或者 Devices 正常工作的电压和频率组合。内核提供这一个Layer,是为了在众多的电压和频率组合中,筛选出一些相对固定的组合,从而使事情变得更为简单一些

PM QOS,所谓的 PM QOS,是指系统在指定的运行状态下(不同电压、频率,不同模式之间切换,等等)的工作质量,包括latency、timeout、throughput 三个参数,单位分别为 us、us 和 kb/s。通过 QOS 参数,可以分析、改善系统的性能

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分