一丶环境信息
源码版本:OpenHarmony-4.1-Release
板子型号:dayu200(RK3568)
二丶Bootchart工具
在开机优化时,我们需要借助Bootchart工具,当前OpenHarmony已经支持了Bootchart工具,我们可以直接使用Bootchart工具,Bootchart工具介绍如下:
概述
Bootchart是一个用于系统启动过程性能分析的开源软件工具。它可以在内核装载后就开始运行,记录系统启动过程中各个程序启动所占用的时间、CPU使用情况以及硬盘读写情况,直到系统启动完成为止。进入系统后,Bootchart可以将启动时记录下的内容生成多种格式(如PNG或PDF)的图形报表,以便用户进行深入分析。
功能与用途
分析系统启动时间和启动过程中资源的使用情况。
发现可能影响系统启动速度的因素,如某些进程启动缓慢或占用过多资源等。
对系统进行优化,提高系统启动速度和运行效率。
主要特点
简单易用:只需在系统启动时启用Bootchart,即可生成详细的分析报告。
全面详细:Bootchart可以记录系统启动过程中的各种数据,包括CPU使用率、内存使用量、磁盘I/O等,并以图表形式展示出来。
使用方法
参考文档:OpenHarmony性能调优工具—boochart_小~Q-Laval社区
通过Bootchart工具,开发者可以深入了解系统的启动过程,并对其进行详细的性能分析,从而优化系统启动速度和运行效率。
三丶开机优化
开机优化的主要目的是为了快速启动开机动画和退出开机动画(显示桌面)。所以在优化之前,我们需要了解一下OpenHarmony系统中投票机制,此机制是针对开机动画而设计的,参考文档:OpenHarmony开机动画流程_小~Q-Laval社区
可以使用Bootchart工具抓一份火焰图如下所示:
所以这个时候我们可以从启动顺序来入手,由于init是用户态的第一个程序,是1号进程,所以对应的init.cfg就无需修改,而需要修改的就是foundation.cfg/samgr_standard.cfg/param_watcher.cfg/appspawn.cfg/useriam.cfg/access_token.cfg/graphic.cfg。那么如何修改这些cfg文件,能够保证启动顺序提前呢?在文档:zh-cn/device-dev/subsystems/subsys-boot-init-service.md · OpenHarmony/docs - Gitee.com中有一个start-mode字段,可以提前启动顺序,我们先来看看详细的定义:
|