Android系统的启动细节分析,可以用工具bootchart来进行
一、Bootchart简介
官网地址:https://www.bootchart.org/
Google推荐bootchart作为开机优化的首选工具:https://source.android.com/devices/tech/perf/boot-times#bootchart
bootchart 可为整个系统提供所有进程的 CPU 和 I/O 负载细分。该工具不需要重建系统映像,可以用作进入 systrace 之前的快速健全性检查。
二、Bootchart和Android关系
Android 中包含了bootchart 的源码实现,路径在 system/core/init/bootchart.cpp 中, bootchart 通过内嵌在 init 进程中实现,在后台执行。
bootchart 的测量时段是 init 进程启动之后,不包含 bootloader和 kernel 的启动时间。
在init.rc中
on post-fs-data
...
bootchart start
on property:sys.boot_completed=1
...
bootchart stop
三、编译生成bootchart.jar
在https://github.com/xrmx/bootchart上下载bootchart的源码, 迁移到ubuntu系统能,安装JDK1.8和ant,在源码目录直接ant就可以编译生成bootchart.jar
四、bootchart在Android上的使用
-
使能bootchart,创建enabled文件
// 创建/data/bootchart/enabled文件
# adb root
# adb remount
# adb shell touch /data/bootchart/enabled
-
重启设备,获取开机启动log文件
-
打包生成bootchart.tgz
//将/data/bootchart/ header和3个log文件打包为bootchart.tgz
$cd /data/bootchart/
$ tar -czf bootchart.tgz header *.log
gen4_gvm:/data/bootchart $ ls -alF
-
导出bootchart.tgz文件
-
生成bootchart.png图
-
在ubuntu环境,使用bootchart工具生成bootchart.png图
-
使用bootchart源码bootchart.jar生成bootchart.png图
-
java -jar bootchart.jar boochart.tgz