Bootchart是一个用于linux启动过程性能分析的开源软件工具,在系统启动过程自动收集CPU占用率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。Android5.1之前已自带bootchart,但缺省时不被编译,需要显式指定编译;而Android5.1之后的系统默认已经将bootchart编译进来。
编译BootChart
Android系统中的bootchart源代码位于system/core/init/
目录,主要是bootchart.h
和bootchart.c
两个文件。通过修改bootchart.h
中#define BOOTCHART 0
为#define BOOTCHART 1
,然后再重新编译即可。
配置BootChart
默认情况下,bootchart是不会执行启动数据采样动作,必须配置一个采样时间。
在5.1手机上创建/data/bootchart-start文件,存储bootchart采样时间(秒)
adb shell echo 120 > /data/bootchart-start
6.0及以上版本的系统中原生已经存在/data/bootchart文件夹,故不用手动创建,只需要创建/data/bootchart/start文件存储bootchart采样时间(s)
adb shell echo 120 > /data/bootchart/start
配置好后,重新启动后bootchart就会执行采集数据。采集的数据保存在/data/bootchart文件夹中,包含如下5个文件:
header,kernel_pacct,proc_diskstats.log,proc_ps.log,proc_stat.log。
bootchart图形化
bootchart收到的数据分别保存到了5个文件中,为了能使用PC端bootchart工具导出bootchart图片,可以在/data/bootchart
目录使用如下命令将所有内容打包到bootchart.tgz。
busybox tar -czf bootchart.tgz *
然后再用adb puull
命令将ootchart.tgz
文件拉出来。
adb pull /data/bootchart/bootchart.tgz
也可以通过执行system/core/init/grab-bootchart.sh
脚本来生成bootchart.tgz文件,实际是一样的操作,具体可以看grab-bootchart.sh
脚本源码。
如果Linux pc上已经安装了BootChart工具,就可以执行如下命令导出bootchart图片。
bootchart ./bootchart.tgz
在一些linux系统可以直接安装BootChart工具。
sudo apt-get install bootchart
但现在似乎很多系统都从软件源中移除了bootchart,或者是Windows系统下的话,此时就需要我们下载BootChart的源代码编译成jar包来使用了。源代码可以到http://www.bootchart.org去下载。下载后用eclipse工具就可以编译。编译好后就可以用bootchart.jar来帮我们生成bootchart图片了。
java -jar bootchart.jar bootchart.tgz
最终就会生成你想要的bootchart图片,好了,接下来就可以bootchart图表来进行开机启动分析了。