安卓cpu调速器和IO策略

怕以后找不到放在这,原帖地址:http://tieba.baidu.com/p/3156449550

以下是原文

==========================================================================

本人一直不明白安卓I/O,今日有幸一见,分享给高通的gay


以下信息收集自网上。
一、CPU调速器
现在很内核都会增加新的CPU调速器,很多人不知道内核中的CPU调速器有什么用,
下面转一个CPU调速器Governor说明:

什么是Governor?
→Android的CPU 的频率并不是一成不变的,会因应程式所需而调整频率,通常会视乎CPU Loading% 而升/降频,在特定时间再检查是否升/降。Governor就是默认的情景模式。

【ondemand】按需模式:
→按需调节cpu频率,不操作手机的时候控制在最低频率,滑屏或进入应用后会迅速提升至最高频率,当空闲时迅速降低频率,性能较稳定,但因频率变化幅度过大,省电方面只有一般的水平。是一种在电池和性能之间趋向平衡的默认模式,但是对于智能手机来说,ondemand在性能表现方面略有欠缺。

【interactive】交互模式:
→和ondemand相似,规则是“快升慢降”,注重响应速度、性能,当有高需求时迅速跳到高频率,当低需求时逐渐降低频率,相比ondemand费电

【conservative】保守模式:
→和ondemand相似,规则是“慢升快降”,注重省电,当有高需求时逐渐提高频率,当低需求迅速跳至低频率。

【OndemandX】按需X模式:
→在Ondemand基础上改进而来。关屏时手机进入睡眠状态时,锁定最高频率频率为500Mhz

【Scary】胆小模式:
→基于Ondemand修改,CPU提升速度比ondemand慢,同时具有smartass的特点

【interactiveX】交互X模式:
→在interactive基础上改进而来。关屏时手机进入睡眠状态时,锁定频率为最低值,同时在手机唤醒时能有更好的提升表现。比interactive更注重保护电池。

【Wheatley】惠特利模式:
→规则和Ondemand一样,但是响应速度稍慢,比Ondemand省电

【hotplug】热拔插模式:
→和ondemand模式差不多,当有高需求时直接跳到最高频率,当需求见效时逐级降低频率,但关屏时就单核低频运行,省电。

【lionheart】狮心模式:
→基于conservative模式,但性能有所提高,增快了CPU的调整速度

【lulzactive】级别模式:
→在interactive基础,根据负载逐级升高或降低频率,每一级频率有一个限制值,负载高于限制值就提高一级频率,低于限制值就降低一级频率。所以这个调速器在各个频率上的停留时间都很短。这个调速器的特点是在各个频率之间频繁变动,但是运行于最高和最低频的时间最多。

【smartass】聪明模式:
→是interactive和conservative的升级,根据资源使用智能提供一个适中的频率,空闲时自动降频,锁屏时自动固定频率。特色是锁屏后非常省电。缺点是部分机型锁屏一段时间后容易睡死。

【smartassV2】聪明2模式:
→smartass的升级版,平衡效能和耗电,升频快,降频慢,同时间亦会于锁屏时将频率降到最低,集成了休眠策略,不单单是指关了屏幕和开着屏幕的区别。

【smoothass】活跃模式:
→在smartass基础上改进得来的,性能更高,调节速度更快,耗电少

【SavagedZen】平衡模式
→在smartass的基础优化而来,同时注重电池和性能,使CPU达到一个更好的整体平衡

【BrazilianWax】巴兹拉模式:
→基本就和smoothass一样

【Minmax】大小模式:
→基于conservative的优化版,类似smartassV2,速度性能最好,比smartassV2略微耗掉

【intellidemand】智能模式:
→可根据GPU使用情况来针对性调节cpu频率,当GPU于重度使用时 ,所有动作都依照ondemand 不变。当3GP于闲置时,会自动限制cpu最高频率,将CPU最高频率锁死于1.0Ghz以减少耗电。关屏时亦会视乎 GPU 情况而作出调整。

【Pegasusq】单控模式:
→源自三星猎户座处理器的一个调速器,可以单独调控单个CPU内核,理论上性能不错也很省电。

【badass】分工模式:
一个新型的CPU调速器,只能用于多核CPU,可分开控制单个CPU内核,来分工完成不同的工作,并且跟着工作量的不同,分别调整单个CPU内核的频率,从而提高性能,节省资源。这个模式现在好像只能用在特定修改的rom中

【performance】高性能模式:
→高性能模式,按你设定范围的最高频率运行,即使系统负载非常低cpu的频率也为最高。性能很好,因为CPU本身不需要资源去调整频率,但是电量消耗较快,温度也高一些。

【powersave】省电模式:
→按设定最低频率运行,日常没有使用价值,除非配合setcpu情景模式,关屏睡眠时使用此调节模式,省电但系统响应速度慢。

【userspace】用户模式:
→任何情况下都会控制CPU运行在配置的频率范围内,配置中的用户自己添加的省电设置。在此情景模式下,降低CPU最大运行频率可以延长电池待机时间,但同时也会降低机器的唤醒速度,建议最好不使用该选项。

【lagfree】无延迟模式:
→很少用的调速器,不紧不慢型,无论负载变化快慢与否,CPU都按一定的停顿时间逐级升高或降低频率。

【lazy】懒惰模式:
→与 ondemand 相似,对于频率上升和下降的响应都很迟缓,可以忽略掉部分迅速变化的频率变化,优点是省电。



二、CPU调速器优缺点详细介绍:

Performance (Always Max)
强制CPU一直运行在最高频率

优点: 良好的性能、速度
缺点: 大功耗,糟糕的电池续航时间,导致手机发热较严重,长期使用会对硬件造成一定的物理损坏

Powersave (Always Min)
强制CPU一直运行在最低频率

优点:最小的功耗,最长的续航时间,最好的发热控制
缺点:糟糕的性能,运行不流畅,有延迟、卡顿

Userspace
用户控制模式,这不是一个预制调速方案的调速器,它允许用户通过非操控内核的方法调节CPU,但是事实在出现"set cpu"这类软件之后就等于废物了

优点:无
缺点:无

Ondemand
按照实际需求快速进行频率调节

优点:基本上实现了平衡,不错的性能兼有不错的续航
缺点:不断地调整CPU频率消耗了一定的电力,导致这只能是一个“理想中”完美的调速器,频率升高时也偏敏感了一些(例如需要500,可能会给你升到650)

Ondemand X
基于Ondemand改进,区分开关屏状态情景

优点:比Ondemand省电
缺点:关屏状态下的频率被锁定在一个特定值 某些情况下可能睡死,稳定性不如Ondemand

Conservative
与Interactive相对,保守的调解方案,缓慢地提升频率,迅速地下降频率

优点:比Ondemand稍省电,在真的需要之前不会提高频率
缺点:缓慢地提升频率意味着在打开一些较大的APP或尝试唤醒待机中的机器会较慢

Interactive
与Conservative相对,快速提升频率,缓慢降低频率

优点: 比Ondemand稍强的性能,较快的响应速度
缺点: 在不需要时仍然维持较高的频率,比Ondemand耗电

Interactive X
基于Interactive改进,区分开关屏状态情景

优点:比Interactive省电
缺点:稳定性不如Interactive

Smartass
Interactive与Ondemand合体,理想中的完美品

优点: 比Ondemand更好的性能,比Interactive更好的续航
缺点: 频率下降在不需要时仍然偏慢(虽然比Interactive好),关屏后盲目降频有时导致后台程序(比如同时挂着QQ,微信,微博)工作不正常

Smoothass
优化过的Smartass,快速调节频率平衡续航与性能

优点:理论上比Smartass好的续航
缺点:类似于Smartass,虽然真的比Smartass略好但频率下降在不需要时偏慢仍然存在

SmartassV2
重写的第二代Smartass,添加结合Conservative的一些特性

优点: 在Smartass的基础上更好的性能与省电
缺点: 关屏后的问题仍然没有解决

LagFree
开屏后一下子跳到一个中度偏高频率,然后类似Conservative地工作

优点:算是解决了Conservative的迟钝问题
缺点:电老虎,虽然比Performance省电...

Lazy
偏向Conservative的Ondemand,据说播放影音很好用


优点:在频率提升/下降前都先调到一个特定的值,降低了关屏状态的最大值
缺点:比Ondemand发热稍厉害,执行耗费较多资源的应用时如果进入了关屏状态过久可能会睡死

Brazilianwax
类似SmartassV2,比SmartassV2更积极提高频率

优点:比SmartassV2好的性能
缺点:比SmartassV2差的续航

Intellidemand
以Ondemand为基础,根据GPU状态区分情景

优点:GPU忙时依照Ondmand模式工作,GPU"空转"或中度使用时频率锁定在定值
缺点:执行不太依存GPU运算但较耗费CPU资源的应用时可能会性能不足,GPU“空转”(闲时)不够省电

Lionheart
基于Conservative降低了频率下降的敏感度

优点:比Conservative强的性能
缺点:进入高频率后几乎成了Performance模式

Lionheart X 
优化后的Lionherat

优点:结合了一点Smartass的特定,降低功耗
缺点:稳定性不如Lionheart

Luzactive
更偏向Interactive的Smartass,分几个固定的档进行调控

优点:分几个固定的档进行调控,性能功耗比较平衡
缺点:分几个固定的档不够灵活,关屏会设定为最低处理器速度可能导致睡死

Savagedzen
基于SmartassV2编写,比Brazilianwax平衡

优点:比SmartassV2好但比Brazilianwax差的性能,比SmartassV2差但比Brazilianwax好的续航
缺点:稳定性不如Brazilianwax
Scary
基于Ondemand,提速比Ondemand慢

优点:比Ondemand省电
缺点:频率提升慢了有时候会叫人抓狂..

Wheatley
基于Ondemand,提速降速都比Ondemand慢

优点:比Ondemand省电
缺点:频率提升慢了有时引发卡顿,比Scary耗电

Hotplug
基于Ondemand,有性能需求直接最高,没性能需求直接最低

优点:简单粗暴,还算平衡
缺点:性能需求属于中度的情何以堪...

Minmax 
基于SmartassV2改进

优点:比SmartassV2好的性能
缺点:比SmartassV2耗电

Badass
只能用于多核CPU,分开控制单个CPU核心

优点:节省资源,耗电和性能较平衡
缺点:对内核要求苛刻,稳定系欠佳

Pegasusq / Pegasusd
源自Samsung Exynos ,单独调控单个CPU核心(资料不足)

优点:理论上耗电性能较平衡
缺点:不确定与其他芯片的兼容性,不确定三星芯片发热相对较大是否与此有关

MSM-DCVS
高通Krait核心芯片独有(资料不足)

优点:据说可以用低功率获得高性能
缺点:高通=睾痛 (undefined开玩笑的)


三、I/O调度模式:

(i/o即input/output的缩写,关于数据的读写操作,不同进程请求数据的优先顺序等等。
io调度模式比较复杂,我没有具体测试,这里仅对ray上出现的几个模式做说明,部分参考xda、androidforums、wik1pedia、linuxarchive资料)

noop这个调度模式会把并到一个简单的队列里。不适合有机械结构的存储器,因为没有优化顺序,会增加额外的寻道时间。属于最简单的一个调度模式,无视io操作优先级和复杂性,执行完一个再执行一个,如果读写操作繁多的话,就会造成效率降低。

anticipatory其实这个有点类似于pc硬盘的NCQ功能,执行有预测性的调度,看起来似乎可以提高效率,不过因为它的预测机制会在进程将要结束一个读写操作时时开始准备下一个的预处理,所以会打乱系统正常的连续io调度,降低随机存取效率。用的人很少,不推荐。

deadline顾名思义,用过期时间来排序io操作顺序,保证先出现的io请求有最短的延迟时间,相对于写操作,给读操作更优先的级别。是比较好的一个调度模式。

cfq完全公平队列,是anticipatory模式的替代品,没有过多的做预测性调度,而是根据给定的进程io优先级,直接来分配操作的顺序。这个模式在linux上表现良好,但也许并不是最适合android的io调度模式,太强调均衡,而降低了连续读写数据的性能。

vr具有和deadline相似的操作排序机制,有着最高的峰值读写速度,但是性能比较不稳定,也就是说可能跑出最高的分数,但是也会出现最低值。

sio虽然基于deadline,但是它和noop一样,不会对io操作进行排序,所以有着noop那样快速的存取速度,但并没有过多优化io操作。如果不喜欢noop完全不参与调度,也可以选择这个。

Row
顾名思义ROW=Read over write
(这个调度器的解释可以总结为:最大限制减少IO响应时间,并且重排执行操作,直接进行读写操作,给予IO最高优先值。在移动设备中,它将不会在桌面上有尽可能多的并行线程。通常它是一个单一的线程或最多2个同时工作的线程读写。有利于阅读的请求通过写入读取的延迟大大降低。比deadline好用,但是如果线程过多有可能会带来瞬间卡顿)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值