那些年,我们一起经历过的 Android 系统性能优化

时间:2024-04-06 22:21:44

Android 系统性能优化,最近几年 ,Google 之外,绝对是中国的手机厂商参与得最深最广。不光深挖系统、场景,还要和 Top 应用合作优化,和各种流氓应用勾心斗角。同时 Google 也在不断吸收一些 common 的优化经验,应用到每年的大版本更新中去。

接下来简单梳理一下,近几年来各大手机厂商拿出来宣传的性能优化技术。

1 华为 - 18 个月不卡顿

长时间使用卡顿,成为 Android 手机的通病,各个手机厂商应该都有专项来投入这个问题,华为是首个公开把这个问题展示到了台前,并成了一段时间的热点。

那些年,我们一起经历过的 Android 系统性能优化

1.1 技术背景

从华为的公开资料看,应该是通过分析大量压力和老化测试后出现的卡顿问题,有共性的原因归类为下面几个:

  • 1.文件碎片化严重  
    长时间使用,文件反复读写就带来了大量的文件碎片,读写文件时速度变慢,导致卡顿。

  • 2.开放的安卓缺乏对资源优先级的判断  
    Android 系统是开放的,没有明确的应用优先级。

  • 3.系统资源有限无多余资源可用  
    系统资源有限,资源需求方很多,容易出现同一时刻资源紧张的情况。

1.2 技术方案

那些年,我们一起经历过的 Android 系统性能优化

 

  • 1.减少文件碎片化

    • 应用 F2FS: "引入了全新的 F2FS 文件系统,相较于安卓原生的EXT4文件系统,能从源头上减少文件碎片化的产生"

    • 文件系统碎片整理: "引入了实时自动整理文件碎片功能,大大提升了文件垃圾回收效率" 猜想应该是把整理放在空闲/待机时

  • 2.应用优先级智能判断

    • 基于用户习惯和应用流行程度共同设定优先级。

    • 应用分类,打开时提供不同的资源保障。分为:计算优先型、内存优先型、存储优先型。比如相机比较耗内存,打开时就需要立即清理出足够内存。

  • 3. 智能调度

    • CPU 调度优化:猜想是做了应用级别的 CPU 资源控制,频率核心数,schedule 层面当时不一定有涉及。

    • 内存资源调度:低优先级应用退到后台,进行内存压缩。

      那些年,我们一起经历过的 Android 系统性能优化

    • 存储 IO 资源调度:"开辟了类似公交专用道的动态专属资源通道,以满足优先级高的应用获得稳定足够的IO资源"。猜想基于IO调度器调整进程IO优先级,或者通过blkio cgroup控制其他应用的IO访问。

    • Android 基础组件优化:数据库 read 优化,引入 Vulkan。

1.3 优化评价

号称 18 个月不卡顿, 是基于一套性能衰退的评估模型, 注意图1的右下角的一行小字 "基于华为测试模型", 在这基础上加大压力,模拟用户使用 18 个月之后的情况。从华为公开的资料看,18 个月不卡顿发布的时候,这个评估模型是基于文件系统的老化之后的性能测试。
"我们使用了一种配合大数据的科学方式来模拟文件系统在 18 个月之后老化的情况。我们让手机在短时间之内,完成一般手机在 18 个月中运行读写、删除、反复读写的流程,就好像看视频的时候按 ”快进”一样。"

基于特定的评估模型,解决特定的问题。效果肯定是有,但是卡顿肯定也还是有,不然就不会有后面的种种吓一跳技术了。

2 华为 - GPU Turbo

2.1 技术背景

华为手机的游戏性能一直饱受诟病,970 之前麒麟处理器的能效做的不好,这里不光有芯片设计层面的问题,也有软件/驱动层面的问题,这时候手机就要去做取舍,在功耗优先的策略下,性能就必然很受限制。
一些媒体公开的评测也能看到,那时候华为的手机往往玩游戏几分钟十几分钟就发热限频了。

2.2 技术方案

出来以后,业界哗然,各种讨论也非常多。

在综合一些后来的评测结果看,个人认为,主要是两点,解决 bug,优化功耗(这可能是 CPU Turbo1.0的核心了)。

2.3 优化评价

从 GPU Benchmark 数据看,GPU Turbo 引入之后并没有带来 Benchmark 数据上的性能提升。

使用麒麟 970 芯片的 P20-PRO 在没有 GPU Turbo 的情况下,如果关闭 "省电精灵", 实测性能表现和同样搭配 970 的、有 GPU Turbo 的荣耀 V10 基本一致。

所以结论是 GPU Turbo 1.0 实际上没有提升 GPU 的物理性能,而是优化了功耗,使得发热降低,从而可以避免之前不得已而为之的"省电精灵"过度限制系统性能。对于移动设备来说,没有牺牲性能的前提下,降低了功耗,其实就相当于是提升了性能。

当然现在 GPU-Turbo 已经进化到了 3.0,估计都是细节的优化比较多,具体提升可能比较有限,毕竟华为都不大力宣传了。

3 华为 EROFS 方舟编译器

尚未有第三方使用的报告,有待验证。

但从文件系统、从编译器入手,确实不是主打性价比的组装厂能做到的。

4 VIVO Multi-Turbo

4.1 技术背景

VIVO 在系统优化包装方面推出的比较晚,18年开始推出 Dual-Turbo,19 年晋级到 Multi-Turbo, 以后可能会叫 Multi-Turbo 2.0?

4.2 技术方案

Turbo 来 boost 去的事情,各个手机厂商应该比较早就都开始做了,不管是高通平台的 perflock 还是MTK平台的perfservice ,原生都具备简单场景 boost 的能力,三星除外。

Turbo 会带来性能提升的原因有二

  • 一是 处理器平台的默认策略往往是性能-功耗均衡的产物,特别是16nm制程之前的处理器,功耗发热都比较厉害,系统的性能-功耗策略就必须做的比较保守,这时候往往针对一些典型的场景比如应用启动、滑动列表做boost,效果就比较明显。

  • 二是 系统并不知道每个应用的特点,他们的资源需求是什么样的,Android 系统的 CPU、GPU、网络、内存 这些子系统都是各自为政,往往某一部分就会成为一些场景的性能短板,这时候做应用资源/行为分析,针对性做资源保障,就可以进一步提升性能表现。

4.2.1 Dual-Turbo

那些年,我们一起经历过的 Android 系统性能优化

Dual-Turbo分为系统加速引擎 System-Turbo 和游戏引擎 Game-Turbo

  • System-Turbo

应该是系统层面的 common 加速,比如应用启动、触控、抢红包、微信、头条等典型场景和应用的加速以及调度和内存层面的资源保障策略。

  • Game-Turbo

应该是在系统策略基础上,做更精细的场景优化,比如游戏加载、帧率稳定性、游戏行为识别(和游戏厂商合作,比如团战了,告诉系统一下),以及更激进的游戏资源保障策略,绑定到大核、清理后台内存等等。

4.2.2 Multi-Turbo

  • ART++编译增强 Turbo

  • Net Turbo

  • Center Turbo

  • AI Turbo

  • Cooling Turbo

ART 部分可能是调整了一些参数以及默认行为。

网络部分,物理性能肯定没得提升,倒是可以抢占同一个路由器的资源、另外策略上进行应用级别的网络资源控制。

AI 自动化的识别应用或者是行为?

Cooling Turbo 凑数的,可能是有人专门来tuning 软件温控了,另外只有4个的话,数字可能不够吉利~

4.3 优化评价

从公开的内容看,涉及的面比较多,这里 Turbo 一下,那里也 Turbo 一下,看起来不够系统,甚至取名字都很为难,才叫 Multi-Turbo 。

数了一下,少了内存优化的部分,估计明年会有。最近的IQOO Pro 已经使能了 F2FS。

作为华为之外的厂商,确实很少在单点上做出非常大的突破,但是他们积累的一些方方面面的优化,都是通过大量的市场反馈而来,同样也是非常有价值。

5 OPPO Hyper-Boost

5.1 技术背景

同 VIVO

5.2 技术方案

从命名看,OPPO 比 VIVO 要更有逻辑一点,内容应该差不多。

VIVO 是以技术点分类,A技术 Turbo、B技术 Turbo、C技术 Turbo。

OPPO 以模块分类,系统、游戏、应用

  • OPPO 系统引擎

整合梳理 CPU、GPU、DDR、存储、modem、wifi、display 做相应的优化。

那些年,我们一起经历过的 Android 系统性能优化

 

  • OPPO 游戏引擎
    保障 top 游戏性能,做资源调度优化、网络优化等,以及和部分游戏厂家合作优化

比如当年王者荣耀的多线程版本率先发布, 早期的版本都是一个巨大 UnityMain ,当时基本上没有处理器能吃得消,做到持续高性能输出,手机端是不可能实现的。

那些年,我们一起经历过的 Android 系统性能优化

 

  • OPPO 应用引擎

和 top 应用进行典型场景合作,基本上都是应用通知手机系统要进行到什么场景,手机做针对性的资源准备。

那些年,我们一起经历过的 Android 系统性能优化

5.3 优化评价

同 VIVO, 值得一提的是应用引擎,和微信、淘宝、QQ 这些 top 应用做合作优化, 和当年王者荣耀多线程版本一样, 会占一点时间优势。这也是国内的手机厂商做的更出色的地方,卖给消费者的不只是硬件和系统,还有使用体验,哪怕不是自己的应用和业务,只要是影响用户使用的地方,就主动去发起合作和优化。

6 小米 - Mi-Turbo

6.1 技术背景

"Game Turbo游戏加速,游戏工具箱2.0,手游爱好者的福音。"

"Mi Turbo 防系统卡顿,通过系统底层优化,模拟使用18个月后依然流畅如新。"

6.2 技术方案

  • Game Turbo

技术上和 OV 应该差不多,但是没有提和厂家的合作优化,由于小米在发热控制这块一直比较开放,所以一般比较少限频。游戏工具箱、或者是游戏模式 top 几家厂商都有了。

那些年,我们一起经历过的 Android 系统性能优化

 

  • Mi Turbo

有点后发制人的意思,Turbo + 18个月不卡顿,方案和手段应该都是大同小异

那些年,我们一起经历过的 Android 系统性能优化

6.3 优化评价

由于把小米放在最后,而内容和方案上小米又没有什么特别的地方,所以可写的内容很少。

在系统优化这块呢,小米算是起了个大早,赶了个晚集。

7 Others

7.1 MEIZU

  • One Mind 智慧引擎

  • 内存清道夫

  • 应用冻结

7.2 一加

  • RAM Boost
    内存压缩 + 常驻内存

7.3 联想

  • 永不卡顿

比较有意思的是永不卡顿居然还有3.0版本,无敌很寂寞,不过现在已经不宣传了。

7.4 努比亚

国企不需要!

应该是做了一些事情的,只不过不会包装。

7.5 三星

Turbo 是什么?三星还是大厂气质,和苹果一样,不整这些,不过易用性、还有针对性的优化方面,三星确实已经落后国产top厂商了,先全球再中国的思路导致的结果吧。但不管是 sdcardfs 还是 F2FS 三星都贡献巨大。

8 总结

总之呢,主要见到的就是下面这些点,选一些组合打包起来,就变成 Multi 或是 Hyper 了。

  1. 解决性能短板,bugfix

    往往一些短板成为了一款机器的性能瓶颈,比如号称 火龙的 骁龙810处理器,巨大的发热量导致手机不得不降频使用,实际性能甚至不如一下中端机器。典型的短板比如处理器功耗发热、电池容量、散热设计、内存大小等等。

    或者是类似系统存在明显的性能bug,比如GPU Driver/framework的问题,影响性能发挥。

  2. 场景/行为 boost策略,兼顾 low power

    做场景和行为的识别已经非常容易,甚至原生都有,但手机电池毕竟有限,如何避免一些火力全开的暴力想法,做精细化的资源控制,才是考验水平的地方,游戏都跑60帧,只耗2/3的电,不就赢了吗?

  3. 更聪明的调度

    如果 CPU/GPU/DDR/IO 等各个模块的调度都能做到足够聪明,就好比优秀的自动挡变速箱能做到手动老司机的水平,但手机场景往往非常复杂,一个应用有时候是处理器密集型的、有时候又是IO密集型的,所以聪明的调度和场景策略还需要结合起来用,相辅相成。至于叫不叫 AI 就没所谓了。

  4. 应用级别的优化,系统端精细化地去profile具体的应用/游戏,分析其行为特点,保障其使用的资源需求。另外一个方面,只有应用自己知道自己接下来要做什么,需要什么资源,应用在一些时候可以呼叫系统给自己相应的资源支持。这就需要合作优化了。

  5. 文件系统 + 存储
    比如现在 F2FS + UFS3.0 变成行业热点。

  6. 大内存 + 应用常驻
    应用内存常驻,就可以实现应用秒开,避免加载的时间,大内存是应用常驻的基础,内存压缩可以进一步增加可用内存空间。

  7. 虚拟机、编译器优化
    google 和芯片厂做的比较多,OEM 比较少深度涉及。

  8. 更好的信号、更优质的屏幕(刷新率 90 Hz 甚至 120 Hz)等硬件。

9 展望

展望一下,这里想把手机厂商分为三类,

  • 一类是苹果,自己研发芯片和核心元件,有自己的OS和生态;

  • 二类是三星、华为,自己研发芯片和核心元件(当然华为和三星还是有所区别),共享 Android OS 和生态,当然三星在本土化这一块做的是不如华为和其他 Top 厂商的;

  • 三类是其他 Android 手机厂商,芯片和核心元件来自于不同供应商,共享 Android OS和生态;

从技术层面看,苹果始终会是在性能的第一阵营,可以顺利推行从硬件到 OS 到 APP 级别的任何性能保障方案;

三星、华为属于第二阵营,可以实现芯片-OS层面的整合优化;

其他 Top Android 手机厂商差距不会太大,他们有多个不同的 SoC 供应商,方案有差异,非常芯片底层的地方,往往不会去涉及,更多是做纯软件层面的策略性的优化,有价值但是不容易形成壁垒,注意这个不容易形成壁垒指的是在 top 厂商中间,一些小的厂商往往还是心有余而力不足。不过还是很期待看到有更多的突破出现。