Linux 系统的电源管理与进程线程机制解析
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