请问 android 的测试开机工具 bootchart 是从哪个阶段到哪个阶段为止?

2022-05-18 10:42:57 +08:00
 yhm2046

查了好多资料都没有说明白,只知道是从 init 进程开始计时,无 boot rom 和 bootloader ,kernel 部分的统计。但是截止时间不知道到哪里截止,谁能解释一下谢谢。 另外请问还有别的工具可以统计分析 bootloader 和 kernel 阶段的耗时吗?我们需要优化开机时间下面是获取的 bootchart 图片

![image]( https://drive.google.com/file/d/1wkhMeR7KykAr-efPJuR-H45IKGL5dvLm/view?usp=sharing)
3937 次点击
所在节点    Android
8 条回复
vsyf
2022-05-18 22:58:35 +08:00
但是截止时间不知道到哪里截止
=> 第一个应用(launcher)启动之后修改 sys.boot_completed 属性时就是 bootchart 结束的时间.
yhm2046
2022-05-19 11:31:09 +08:00
@vsyf #1 请问这个属性值是系统属性还是 launcher 属性,在哪里修改? 我问了同事他没有修改过
vsyf
2022-05-19 12:09:25 +08:00
yhm2046
2022-05-19 12:20:09 +08:00
@vsyf #3 谢谢,请问 sys.boot_completed 对应的开机设置是 sys.boot_start 吗? 我没有搜到
vsyf
2022-05-19 12:32:03 +08:00
@yhm2046
可以去 system/core 下面搜索看看
yhm2046
2022-05-19 14:49:56 +08:00
@vsyf #5 你好我在 system/core 下面只搜索到 boot_reason 没有 boot_start , 是没有定义吗?
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` 停止线程。
yhm2046
2022-05-19 18:09:21 +08:00
@vsyf #7 谢谢,还是要多看源码。另外请问 boot rom 和 bootloader ,kernel 部分的统计有什么估计可以记录耗时?我们现在需要裁剪优化启动时间,请多指教

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/853630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX