1. 目的... 4
2. 需求和限制... 4
2.1. 需求
3. linux内核Cpu频率机制介绍... 6
4. freq framework. 7
4.1. 架构... 7
4.2. 配置文件... 7
5. 答疑... 9
6. 附录... 9
介绍linux内核提供的Cpu频率管理机制和android来实现的频率管理策略的方法。
l Cpu频率可以根据系统负载动态调节, 达到省电的目的。
l 长时间持续场景(黑屏播音乐,etc)的特殊处理, 尽可能把cpu频率降到不影响用户体验即可。
l 游戏模拟器工作时需要更加流畅的用户体验。
l 不仅是cpu频率,系统运行时的一些参数比如电压,gpu频率,coda频率,vpx频率都可以根据
应用场景变化来调节。
3. linux内核Cpu频率机制介绍
l ondemand:根据cpu负载动态调节。
l userspace:cpu频率定在一个用户指定的频率。
l performance:cpu频率定在系统最高频率。
l powersave:cpu频率定在系统最低频率。
cpufreq.xml文件用来描述系统各场景的频率电压, freq framework会根据cpufreq.xml的配置和运行态系统所处场景(比如有电源供电, 低点, 正在游戏, 已经黑屏, 正在播音乐,etc)进行调节。
主要通过广播与外界交互, 对无法通过广播获得的场景信息, 提供两个接口供外界输入。
为了方便测试和满足不同方案对调频策略的不同需求,加入了xml文件来对不同场景所使用调频策略进行配置。
下面为默认配置,注意所用频率必须为scaling_available_frequences中支持的值:
<?xml version="1.0" encoding="utf-8"?>
<cpufreq>
<!-- policy defination-->
<policy>
<overclocking cpu_freq="996000" />
<performance cpu_freq="900000" />
<ondemand cpu_min="210000" cpu_max="900000" />
<safemode corepll_freq="630000" />
</policy>
<!-- scence defination, use a policy, can override policy attribute-->
<scence>
<default policy="ondemand" />
<game policy="overclocking" />
<video policy="safemode" />
<video_vpx policy="safemode" corepll_freq="792000" />
<camera policy="safemode" corepll_freq="720000" />
<music policy="ondemand" cpu_min="210000" cpu_max="390000" />
<screen_off policy="ondemand" />
<music_screenoff policy="ondemand" />
<lowpower policy="ondemand" />
<powered policy="performance" />
<booting policy="performance" />
<tvout policy="safemode" corepll_freq="840000" />
<game_tvout policy="safemode" corepll_freq="840000" cpu_freq="840000" />
</scence>
</cpufreq>
l Overclocking模式支持cpu_freq属性, cpu定频。
l Performance模式支持cpu_freq属性, cpu定频。
l Ondemand模式支持cpu_min, cpu_max属性, cpu在其间动态调, 不同频率对应系统电压也会不同,目前写死在驱动里, 还不可配置。
l safemode模式支持......
l 目前的调频策略?
框架通知调频服务系统所处场景,调频服务根据配置文件设置该场景的频率策略
l 怎样调频?
addScence/leaveScence接口触发场景切换时调频,或在ondemand模式时cpu负载变化时调频
l 调频配置脚本如何修改?
见4.2节
l 调频注意事项
配置文件里的频率值必须为scaling_available_frequences中支持的值