DVFS
(
Dynamic Voltage and Frequency Scaling
)动态电压频率调节,是⼀种实时的电压和频率调节技术。⽬前 4.4
内核中⽀持
DVFS
的模块有
CPU
、
GPU
、
DDR
。
CPUFreq
是内核开发者定义的⼀套⽀持动
态调整
CPU
频率和电压的框架模型。它能有效的降低
CPU
的功耗,同时兼顾
CPU
的性能。
CPUFreq
通
过不同的变频策略,选择⼀个合适的频率供
CPU
使⽤,⽬前的内核版本提供了以下⼏种策略:
interactive
:根据
CPU
负载动态调频调压;
conservative
:保守策略,逐级调整频率和电压;
ondemand
:根据
CPU
负载动态调频调压,⽐
interactive
策略反应慢;
userspace
:⽤⼾⾃⼰设置电压和频率,系统不会⾃动调整;
powersave
:功耗优先,始终将频率设置在最低值;
performance
:性能优先,始终将频率设置为最⾼值;
详细的模块功能及配置,请参考
docs\Kernel\DVFS\
⽬ 录下⽂档。
ARM/GPU/DDR
分别有对应的调试接
口,可以通过
ADB
命令进⾏操作,对应的接口⽬录如下:
这些⽬录下有如下类似节点:
available_frequencies
:显⽰⽀持的频率
available_governors
:显⽰⽀持的变频策略
cur_freq
:显⽰当前频率
governor
:显⽰当前的变频策略
max_freq
:显⽰当前最⾼能跑的频率
min_freq
:显⽰当前最低能跑的频率
以
RK3399/RK3399pro GPU
为例进⾏定频操作,流程如下:
查看⽀持哪些频率:
cat /sys/class/devfreq/ff9a0000.gpu/available_frequencies
切换变频策略:
echo userspace > /sys/class/devfreq/ff9a0000.gpu/governor
定频:
echo 400000000 > /sys/class/devfreq/ff9a0000.gpu/userspace/set_freq
cat /sys/class/devfreq/ff9a0000.gpu/cur_freq
CPU
小核:
/sys/devices/system/cpu/cpu0/cpufreq/
CPU
⼤核:
/sys/devices/system/cpu/cpu4/cpufreq/
GPU
:
/sys/class/devfreq/ff9a0000.gpu/
DDR
:
/sys/class/devfreq/dmc/