1 Bootcart结果
图表上部为CPU和disk的使用情况,从左到右是时间轴,下方是各进程的运行状态条,显示各进程的开始时间和结束时间以及对应cpu和I/O利用情况。
2 bootchart数据抓取
Bootchart的数据抓取的devices必须有root权限,user权限下是获取不到的。
2.1 配置
要抓取手机开机一段时间的bootchart数据,需要进行如下配置。其实完全可以在:/local/sourcecode/AndroidL/system/core/init/目录下看bootchart的帮助文档README.BOOTCHART来完成。
(1)执行:touch system/core/init/init.c。touch命令的作用就是将init.c文件的最后修改时间改为当前时间,这样保证init.c文件会被重新make,而bootchart就是在init.c中被调用的,从而保证bootchart会被编进系统中。
(2)执行:./makeMtk –t –o=INIT_BOOTCHART=true project remake(可使用原生源码编译命令)
(3)将编译好的bootimage重新烧写到手机上。
(4)启用bootchart功能。adb shell ‘echo 120 > /data/bootchart-start’ 其中120是采集时间,可以根据需要调整。
(5)reboot devices。Reboot之后,手机开机开始bootcharting统计数据,若此时想结束统计,只需:adb shell 'echo 1 > /data/bootchart-stop'。
(6)生成bootchart.tgz。这里有两种方法:
1、直接把bootchart好的数据pull出来,打包。命令是:adbpull /data/bootchart /local/tem/bootchart/;cd /local/tem/bootchart/;tar czf bootchart.tgz *。Bootchart统计好的数据默认保存在data/bootchart下面,有下面5个文件:
/local/tem/bootchart/header
/local/tem/bootchart/kernel_pacct
/local/tem/bootchart/proc_diskstats.log
/local/tem/bootchart/proc_ps.log
/local/tem/bootchart/proc_stat.log
2、android还是很贴心的,在system/core/init/有一个sh脚本可以直接运行,完成打包。命令:cd system/core/init/;./grab-bootchart.sh。这样,在init目录下生成bootchart.tgz。注意,运行sh脚本时,devices一定处于debug调式下。
(7)使用bootchart生成图片。命令:bootchart bootchart.tgz。
2.2 bootchart的安装
在ubuntu下,直接执行:$sudo apt-get install bootchart。至于bootchart工具怎么使用,自行根据-h的帮助文档来学习。
3 bootchart实现原理
bootchart.c位于/local/sourcecode/AndroidL/system/core/init/bootchart.c。