望远山,知近路,而后自得其乐!

Android启动分析工具BootChart

Bootchart是一个用于linux启动过程性能分析的开源软件工具,在系统启动过程自动收集CPU占用率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。Android5.1之前已自带bootchart,但缺省时不被编译,需要显式指定编译;而Android5.1之后的系统默认已经将bootchart编译进来。

编译BootChart

Android系统中的bootchart源代码位于system/core/init/目录,主要是bootchart.hbootchart.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图表来进行开机启动分析了。

文章评论已关闭!