RK2908开机时间分析及优化

来源:互联网 发布:网络摄像头在线直播 编辑:程序博客网 时间:2024/04/29 17:38
1    RK2908开机时间分析和优化文档背景概述
     目前由于RK2908开机时间比较长(平均35s)可能对一体机项目的整体体验造成影响,所以需要对RK2908开机整个流程进行分析,是否有优化的地方。
2    分析RK2908开机所用的整体时间
2.1    统计的方法
采用bootchart 生成bootchart.png

2.1.1    Bootchart简介
Bootchart 是一个能对 GNU/Linux boot 过程进行性能分析并把结果直观化的工具。它在 boot 过程中搜集资源利用情况及进程信息然后以 PNG,SVG 或 EPS 格式来显示结果。 BootChart 包含数据收集工具和图像产生工具,数据收集工具在原始的 BootChart 中是独立的 shell 程序,但在 Android 中,数据收集工具被集成到了 init 程序中。(Bootchart在android系统中的使用见文档:bootchart-android)
 

2.1.2    Bootchart结果
 
2.1.3    分析结果
 
图中4个区域就是整个开机耗时的地方
1:    kernel init
    大概7s左右
2:zygote class preloading
    从7-19s,大概12s
3:systemserver start
    从19-32s,大概13s
4:packagemanager package scanning
    从32-51s,大概19s
从中可以看出大部分时间都在preload classes和start systemservers及scan packages
3    优化方案
从实际的测试数据分析,首先可以优化zygote的装载类。
zygote的装载类preloaded-classes在下载源码的时候已经确定,在RK2908的SDK中,这个文件共加载了2000多个类,进行分类,主要加载的类有:google服务的类及android framework的类及java类。想做极速启动,可以在preloaded-classes文件中,把不预装载的类去掉只剩下java的类以加快启动速度,但是会影响HOME的响应,apk的响应。
优化/system/app/下的apk包,可以减少一些不需要的apk,从而加快scan packages的时间。Apk的删减建议可以看文档:systemapp中的APK一览.xlsx
 
优化系统预装语言支持。可以裁减系统预装语言只保留中文(简体),英语。
优化systemserver,server的优化建议可以看文档:SystemServer中启动服务列表.xlsx
 
可以去掉android开机动画,bootanimation。去掉bootanimation方法可以参考文档:

4    优化后RK2908开机所用的整体时间
1    2    3    4    5    6    7    8    9    10
24    23    23    23    22    21    23    23    23    23

5    优化结论
     通过对preloaded-classes,scan packages,systemserver,bootanimation的分析和优化,初步可以得出此次优化效果还是比较明显的,但优化后对整个系统的影响需要做进一步的评估。


原创粉丝点击