CPUIdle 状态与调节器
当 CPU 没有可运行任务时,CPUIdle 负责管理空闲状态的选择。在 Qualcomm 平台上,空闲状态在设备树中定义,并通过 PSCI(Power State Coordination Interface)固件传递给 Linux。空闲状态层次结构
Qualcomm ARM64 SoC 通常为每个 CPU 提供三种基于 PSCI 的空闲状态: 表:典型的 Qualcomm PSCI 空闲状态
具体的 PSCI 状态标识符和驻留时间值在 SoC DTSI 中各 CPU 节点下定义。查看方式:
在运行时查看空闲状态
CPUIdle 调节器
表:CPUIdle 调节器PM QoS 延迟约束
驱动程序和用户空间可以通过注册延迟约束,阻止 CPU 进入深度空闲状态。通过 sysfs 设置每 CPU 约束:外设的运行时电源管理
运行时电源管理(Runtime PM)允许各个外设设备在系统运行时进入低功耗状态。在 Qualcomm SoC 上,电源域由 RPMh 硬件资源管理器通过qcom-rpmhpd 驱动进行管理。
在驱动中启用运行时电源管理
监控运行时电源管理状态
- 将
<device>替换为/sys/bus/platform/devices/中的平台设备名称。
Qualcomm 电源域
RPMh 电源域由qcom-rpmhpd 驱动注册。查看已注册的电源域:
热限频
Linux 热管理框架监控温度传感器,并在越过触发点(trip point)时执行降温操作。Qualcomm SoC 通过 TSENS(温度传感器)硬件暴露热区(thermal zone),冷却设备则通过 CPU 频率上限和 CPU 热插拔来实现。查看热区
热管理调节器
表:热管理调节器系统挂起(S2RAM)
系统挂起会关闭大部分 SoC 子系统的电源,同时让 DRAM 保持自刷新。在 Qualcomm 平台上,挂起路径在 EL3 中发出 PSCISYSTEM_SUSPEND 调用,RPMh 硬件时序器按依赖顺序关闭各电压轨。
触发并验证挂起
识别挂起阻碍源
处于活动状态的唤醒源会阻止系统挂起。识别它们:调试挂起失败
启用逐设备的挂起与恢复跟踪:稳压器与时钟管理
减少不必要的常开(always-on)稳压器和未使用的时钟消费者,可以显著降低静态功耗。稳压器状态
查看所有稳压器及其使能状态:regulator-always-on,以允许运行时电源门控。仅对关键电压轨保留该属性:
时钟树
Qualcomm 时钟控制器(GCC、CAMCC、DISPCC 等)由clk-qcom 驱动系列管理。查看已启用的时钟:
devm_clk_get_enabled()(自内核 v5.20 起可用)来获取、启用时钟,并在设备解绑或运行时挂起时自动释放:
功耗分析工具
powertop
powertop 可识别功耗大户、报告空闲状态驻留情况,并显示各进程的唤醒事件速率:
- C 状态驻留率:系统空闲时,深度空闲状态(C2/C3)的驻留率应超过 80%。
- 每秒唤醒数:任何单一来源每秒唤醒超过 50 次都值得调查。

