BOOTCHART ANDROID文档(开机慢)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BootChart在Android中的应用

1简介

Bootchart是一个能对GNU/Linux boot过程进行性能分析并把结果直观化的工具。它在boot过程中搜集资源利用情况及进程信息然后以PNG,SVG或EPS格式来显示结果。BootChart包含数据收集工具和图像产生工具,数据收集工具在原始的BootChart中是独立的shell程序,但在Android中,数据收集工具被集成到了init程序中。

2BootChart使用步骤概述

∙在主机上安装BootChart

∙建立有BootChart支持的init文件

∙安装init到系统镜像

∙使能启动时的BootChart功能

∙收集系统产生的数据

∙根据产生的数据生成图表

∙结果分析

以下部分将对这些步骤进行详细描述(环境:Ubuntu9.04,Android1.6)。

3详细说明

∙在主机上安装BootChart

$sudo apt-get install bootchart

注:由于BootChart是用Java语言实现,所以要求其所运行的主机安装Java包。

∙创建支持BootChart功能的‘init’文件

Andoid系统中运行的第一个程序是'init',其所在的目录为Andoid文件系统的根目录下(即/)。'init'是一个由内核启动的用户级进程,主要是对系统进行初始化和根据init.rc与init.xxx.rc文件建立几个基本的服务。

创建'init'时对BootChart的数据收集功能是可选的,默认的'init'是不支持BootChart 的数据收集功能的。要想在Andoid中应用BootChart,必须创建支持BootChart数据收集功能的'init'。

$cd~/myandroid

$export INIT_BOOTCHART=true

#vim system/core/init/Android.mk

20ifeq($(strip$(INIT_BOOTCHART)),true)

21LOCAL_SRC_FILES+=bootchart.c

22LOCAL_CFLAGS+=-DBOOTCHART=1

23endif

#touch system/core/init/init.c

#cd device/qcom/msm7630_surf#vim BoardConfig.mk

ifeq($(TARGET_BUILD_VARIANT),user)

BOARD_KERNEL_CMDLINE:=androidboot.hardware=qcom

androidboot.bootchart=xifangqing(Add this line)

#vim system/core/rootdir/init.rc(loglevel3改成8,这样INFO可以打印)

adb shell dmesg查看

$make clean(删除out目录)

$make(make kernel即可system/core..)

∙安装'init'到系统镜像

将生成的'init'拷贝到目标板的'/'目录下。(具体方法:将

myandroid/out/target/product/zoom2/root下生成的init文件拷贝到~/work/root目录下,重新编译内核下载到板子上即可在/目录下找到支持BOOTCHART的init文件)

∙使能系统启动时的BootChart功能

#echo120>/data/bootchart-start

重启系统,当'init'开始运行时,BootChart也开始收集数据,知道设定的时间结束(120seconds=2minutes).

∙收集系统产生的数据

'init'过程激活BootChart数据收集工具,并将数据存储到目标系统的/data/bootchart路径下。

BootChart会在/data/bootchart目录下生成三个文件:

proc_diskstats.log

proc_ps.log

proc_stat.log

注:要重新收集数据时,需做以下步骤:

#cd/data

#rm–r bootchart

#rm bootchart-start

重启系统

#echo120>/data/bootchart-start

重启系统后就可以在/data/bootchart目录下看到新的数据

∙根据产生的数据生成图表

将上一步骤中产生的三个文件拷贝到主机上,运行如下命令渲染图像:

$tar czf bootchart.tgz*.log

$bootchart-f png bootchart.tgz

会在当前目录下生成bootchart.png文件,即为目标系统Android启动时的信息。

∙结果分析

一般来说,图表的最上方是CPU和disk的利用情况,从左到右是时间轴,下方是各进程的运行状态条,显示各进程的开始时间和结束时间以及对cpu和I/O的利用情况。

我们关注的主要是各进程的运行时间以及对cpu的利用情况,进而优化系统。

bootchart工具在Android系统开机测量中的应用

bootchart本是一个开源工具,用可视化的方式对GUN/LINUX的开机启动过程进行性能分析,包括资源的使用,如CPU,磁盘等,各进程的执行时间等信息。根据分析结果,确定系统启动的性能瓶颈,制定相应的优化策略。关于bootchart的来历和说明件其官方网站:点击打开链接

Android系统中已有一份bootchart的c实现,位于system/core/init/bootchart.c中。bootchart对Android开机测量是通过内建在init进程中实现的,在后台执行测量。不过bootchart的测量时段是从bootchart被初始化之后到home screen出来之前,不包括

相关文档
最新文档