BootChart-Android文档(开机慢)
更新时间:2023-10-14 01:15:01 阅读量: 综合文库 文档下载
BootChart在Android中的应用
1 简介
Bootchart是一个能对GNU/Linux boot过程进行性能分析并把结果直观化的工具。它
在boot过程中搜集资源利用情况及进程信息然后以PNG,SVG或EPS格式来显示结果。BootChart包含数据收集工具和图像产生工具,数据收集工具在原始的BootChart中是独立的shell程序,但在Android中,数据收集工具被集成到了init程序中。
2 BootChart使用步骤概述
? 在主机上安装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
20 ifeq ($(strip $(INIT_BOOTCHART)),true) 21 LOCAL_SRC_FILES += bootchart.c
22 LOCAL_CFLAGS += -DBOOTCHART=1 23 endif
# 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(loglevel 3 改成 8, 这样INFO可以打印)
$ make clean (删除out目录)
$ make (make kernel即可system/core..) ? 安装'init'到系统镜像
将生成的'init'拷贝到目标板的'/'目录下。(具体方法:将
myandroid/out/target/product/zoom2/root下生成的init文件拷贝到~/work/root目录下,重新编译内核下载到板子上即可在/目录下找到支持BOOTCHART的init文件) ? 使能系统启动时的BootChart功能 # echo 120 > /data/bootchart-start
重启系统,当'init'开始运行时,BootChart也开始收集数据,知道设定的时间结束(120seconds=2 minutes). ? 收集系统产生的数据
'init'过程激活BootChart数据收集工具,并将数据存储到目标系统的/data/bootchart路径下。
BootChart会在/data/bootchart目录下生成三个文件: proc_diskstats.log proc_ps.log proc_stat.log
注:要重新收集数据时,需做以下步骤:
adb shell dmesg查看
# cd /data # rm –r bootchart # rm bootchart-start
重启系统
# echo 120>/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出来之前,不包括
bootloader和kernel的执行时间。
我的系统是UBuntu10.04,现将整个使用步骤归纳如下:
1)、UBuntu下bootchart工具的安装 2)、bootchart在Android下的编译 3)、bootchart在Android下的执行 4)、bootchart测量结果的图形化过程
下面依次对上述四个步骤进行详细说明。
1、UBuntu下bootchart工具的安装
需要安装的工具有两个bootchart和pybootchartgui,执行命令如下: [html] view plaincopy
sudo apt-get install bootchart sudo apt-get install pybootchartgui
2、bootchart在Android下的编译
Android系统编译时,默认的没有打开bootchart的编译开关,即没有把bootchart编译进系统中。要把bootchart编进系统分为两种情况了:
1)、系统没有被编译过或者执行了make clean命令,可以执行以下命令: [html] view plaincopy $ cd mydroid
$ export INIT_BOOTCHART=true $ make clean $ make
2)、系统已经编译过,现在只是要添加bootchart进系统中,执行以下命令:‘ $ touch system/core/init/init.c $ m INIT_BOOTCHART=true
其中touch命令的作用就是将init.c文件的最后修改时间改为当前时间,这样保证init.c文件会被重新make,而bootchart就是在init.c中被调用,从而保证bootchart会被编进系统中。
3、bootchart在Android下的执行
1}、将编译生成的带有bootchart工具的Android系统重新烧录到开发板上,并启动系统
2)、在UBuntu上通过adb connect连接到开发板,然后执行: $ adb shell 'echo 120 > /data/bootchart-start' 3)、执行命令:
$ adb shell 'mkdir /data/bootchart'
在开发板上系统的/data/目录下新建目录bootchart/用来存放bootchart的测量结果,后面要利用这些文件生成可视化图片
4)、重新启动开发板,在开发板的Android系统的/data/bootchart/目录下将看到以下文件: # ls -l
-rw-rw-rw- root root 452 2010-01-01 00:00 header -rw-r--r-- root root 0 2010-01-01 00:00 kernel_pacct -rwxr-xr-x root root 1020195 2010-01-01 00:02 proc_diskstats.log -rwxr-xr-x root root 4252966 2010-01-01 00:02 proc_ps.log -rwxr-xr-x root root 138215 2010-01-01 00:02 proc_stat.log
到此为止,bootchart执行测量后生成的测量数据已经完成,看上面有3个.log文件,下面需要将这些数据进一步处理成易读、易分析的图片。 4、bootchart测量结果的图形化过程
1)、到这里要夸奖下android做的比较贴心,已经写好了脚本将bootchart测量生成的数据直接从开发板上打包出来,生成bootchart.tgz。这个打包脚是Android源码的system/core/init/grab-bootchart.sh文件,和bootchart源码位于同一目录下。脚本的内容如下:
#!/bin/sh #
# this script is used to retrieve the bootchart log generated # by init when compiled with INIT_BOOTCHART=true. #
# for all details, see //device/system/init/README.BOOTCHART #
TMPDIR=/tmp/android-bootchart
正在阅读:
2011年博雅杯人文知识大赛11-11
企业名录登记办理流程01-15
大四综合实习报告 - 图文01-01
浅析小型水利工程防渗处理施工技术(1)03-14
青海大学财艺话剧社 - 剧本创作步骤06-21
2013年青岛市义务教育学校市级三好学生、优秀学生干部和先进班集05-16
1.与朱元思书A(师)08-21
《中国历史》七年级下册复习提纲一07-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- BootChart
- 开机
- Android
- 文档
- 2017年湖北省荆州市中考历史试题
- 2015年二级施工施工管理冲刺150题
- 2019-2020年二年级信息技术上册 第5课 我的儿歌集 - 插入艺术字 3教案 河大版
- 网络教育专升本自我鉴定范文
- 漏水(水浸)应急处理预案
- 洞山石灰石矿2015年度开采方案初稿
- PSA制氢装置培训教材 - 图文
- 高速公路桥梁工程现浇箱梁施工组织设计#双向四车道
- Word、Excel经典上机机考测试题
- 2019年湖北省鄂州市中考数学试卷(答案解析版)
- 118161 - 中铁系统最成功的项目管理经验总结
- 科学技术部令
- 无锡市宜兴市2015-2016学年八年级下期末数学试卷含答案解析
- 青岛版四年级科学上册第四单元复习题
- DSPF2812实验
- 《降低化学反应活化能的酶》导学案 - 图文
- 程序流程图 盒图 PAD图(最终)
- 杨亚娟英语说课稿 - 图文
- 人际沟通期末练习题及答案
- 汉字家园