電源管理(Power Management)在 Linux Kernel 中,是一個比較龐大的子系統,涉及到供電(PowerSupply)、充電(Charger)、時鐘(Clock)、頻率(Frequency)、電壓(Voltage)、睡眠/喚醒(Suspend/Resume)等方方面面。
注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 參數,可以分析、改善系統的性能
-
電源
+關注
關注
184文章
17573瀏覽量
249482 -
Linux
+關注
關注
87文章
11225瀏覽量
208915 -
系統
+關注
關注
1文章
1006瀏覽量
21314
發布評論請先 登錄
相關推薦
評論