查了好多资料都没有说明白,只知道是从 init 进程开始计时,无 boot rom 和 bootloader ,kernel 部分的统计。但是截止时间不知道到哪里截止,谁能解释一下谢谢。 另外请问还有别的工具可以统计分析 bootloader 和 kernel 阶段的耗时吗?我们需要优化开机时间下面是获取的 bootchart 图片
![image]( https://drive.google.com/file/d/1wkhMeR7KykAr-efPJuR-H45IKGL5dvLm/view?usp=sharing)
1
vsyf 2022-05-18 22:58:35 +08:00
但是截止时间不知道到哪里截止
=> 第一个应用(launcher)启动之后修改 sys.boot_completed 属性时就是 bootchart 结束的时间. |
3
vsyf 2022-05-19 12:09:25 +08:00
|
4
yhm2046 OP @vsyf #3 谢谢,请问 sys.boot_completed 对应的开机设置是 sys.boot_start 吗? 我没有搜到
|
6
yhm2046 OP @vsyf #5 你好我在 system/core 下面只搜索到 boot_reason 没有 boot_start , 是没有定义吗?
|
7
vsyf 2022-05-19 17:51:05 +08:00
@yhm2046
你看下 bootchart 是如何运行的就清楚了 在 init 启动的过程中解析 init.rc 执行 `bootchart start` 命令 https://cs.android.com/android/platform/superproject/+/master:system/core/rootdir/init.rc;l=685 在 sys.boot_completed 属性被修改的时候执行 `bootstart stop` 命令 https://cs.android.com/android/platform/superproject/+/master:system/core/rootdir/init.rc;l=1196 `bootchart` 调用对应的 `do_bootchart` 函数 https://cs.android.com/android/platform/superproject/+/master:system/core/init/builtins.cpp;l=1383 https://cs.android.com/android/platform/superproject/+/master:system/core/init/bootchart.cpp;l=210 即`bootchart start` 时启动线程每 200ms 将进程和磁盘信息写入文件,`bootchart stop` 停止线程。 |