1. 目的... 4

2. 需求和限制... 4

2.1. 需求

3. linux内核Cpu频率机制介绍... 6

4. freq framework. 7

4.1. 架构... 7

4.2. 配置文件... 7

5. 答疑... 9

6. 附录... 9

1. 目的

介绍linux内核提供的Cpu频率管理机制和android来实现的频率管理策略的方法。

2. 需求

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频率定在系统最低频率。

4. freq framework

cpufreq.xml文件用来描述系统各场景的频率电压, freq framework会根据cpufreq.xml的配置和运行态系统所处场景(比如有电源供电, 低点, 正在游戏, 已经黑屏, 正在播音乐,etc)进行调节。

4.1. 架构




主要通过广播与外界交互, 对无法通过广播获得的场景信息, 提供两个接口供外界输入。

4.2. 配置文件

为了方便测试和满足不同方案对调频策略的不同需求,加入了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模式支持......

5. 答疑

l 目前的调频策略?

框架通知调频服务系统所处场景,调频服务根据配置文件设置该场景的频率策略

l 怎样调频?

addScence/leaveScence接口触发场景切换时调频,或在ondemand模式时cpu负载变化时调频

l 调频配置脚本如何修改?

见4.2节

l 调频注意事项

配置文件里的频率值必须为scaling_available_frequences中支持的值

更多相关文章

  1. 高级Redis应用进阶课 一站式Redis解决方案
  2. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  3. Android(安卓)获取系统prop
  4. android像launcher一样获取手机应用列表
  5. Android打开系统相册的问题
  6. android好文章或博客地址收藏
  7. om.android.builder.model.SourceProvider.getShadersDirectorie
  8. Android(安卓)输入系统(二)EventHub
  9. Android(安卓)9.0 System.getProperty("java.library.path") 源

随机推荐

  1. OpenGL ES for Android(安卓)环境搭建
  2. Android自动化测试工具——Monkey
  3. Android中外部程序调用方法总结
  4. Android之Bluetooth
  5. 远程调测:Chrome on Android之三 调测WebV
  6. Android应用程序启动过程源代码分析
  7. 【笔记】android sdk集成的eclipse中导入
  8. 系出名门 Android(安卓)系列文章索引
  9. 系出名门Android(9) - 数据库支持(SQLite
  10. android:configChanges属性