深入理解Linux系统的电源管理与进程线程模型
1. Linux电源管理
1.1 CPUIdle驱动
CPUIdle与CPUFreq子系统类似,由属于板级支持包(BSP)的驱动和决定策略的调节器组成。不过,与CPUFreq不同的是,CPUIdle的调节器在运行时不能更改,也没有用户空间调节器的接口。
CPUIdle在/sys/devices/system/cpu/cpu0/cpuidle目录中公开每个空闲状态的信息,每个睡眠状态都有一个子目录,命名为state0到stateN,state0是最轻的睡眠状态,stateN是最深的。需要注意的是,编号与C状态不匹配,且CPUIdle没有与C0(运行)等效的状态。每个状态下有以下文件:
-desc:状态的简短描述
-disable:通过写入1来禁用此状态的选项
-latency:CPU核心退出此状态恢复正常操作所需的时间(微秒)
-name:此状态的名称
-power:处于此空闲状态时消耗的功率(毫瓦)
-time:在此空闲状态下花费的总时间(微秒)
-usage:进入此状态的次数
以BeagleBone Black上的AM335x SoC为例