Android bootchart 工具使用

  • 标签:
  • bootchart /
  • android bootchart /
  • android 开机优化 /
  • android系统工具 /
  • android性能调优

1、bootchart工具简介:

bootchart是一个用于linux启动过程性能分析的开源软件工具,在系统启动过程自动收集CPU占用率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。

2、bootchart在Android平台使用情况:

Android系统中已有一份bootchart的c实现,位于system/core/init/bootchart.c中。bootchart对Android开机测量是通过内建在init进程中实现的,在后台执行测量。不过bootchart的测量时段是从bootchart被初始化之后到home screen出来之前,不包括bootloader和kernel的执行时间(bootchart的原理是取代init process或是内建在init process里,所以只能取得initial script的开机过程报告)。

3、bootchart在Android平台使用步骤:

1) Ubuntu 12.04下bootchart工具安装

2) bootchart在Android下编译

3) bootchart在Android下的应用

4) bootchart测量结果图形化显示

下面依次对上述4个步骤做详细说明

1)、Ubuntu 12.04下bootchart工具安装:

网上很多教程说要安装下面两个工具,经个人验证最后在制作图形化显示时,出现bootchart无法正常解析android中生成的bootchart.tgz文件。

[java] view plain copy
  1. sudo apt-get install bootchart
  2. sudo apt-get install pybootchartgui

异常情况如下,需要下载旧版本的bootchart工具,最终问题得到解决。

下载bootchart_0.9-0ubuntu6_all.deb工具,下载地址:http://download.csdn.net/detail/sckgenius/7166477

安装方法:sudo dpkg -i  bootchart_0.9-0ubuntu6_all.ded

2)、bootchart在Android下编译:

1、  vi  system/core/init/bootchart.h 修改define  BOOTCHART  0 为 define  BOOTCHART  1

[cpp] view plain copy
  1. *
  2. * Copyright (C) 2008 The Android Open Source Project
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. *      http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #ifndef _BOOTCHART_H
  17. #define _BOOTCHART_H
  18. #ifndef BOOTCHART
  19. # define  BOOTCHART  0   // 修改define  BOOTCHART  1
  20. #endif
  21. #if BOOTCHART
  22. extern int   bootchart_init(void);
  23. extern int   bootchart_step(void);
  24. extern void  bootchart_finish(void);
  25. # define BOOTCHART_POLLING_MS   200   /* polling period in ms */
  26. # define BOOTCHART_DEFAULT_TIME_SEC    (2*60)  /* default polling time in seconds */
  27. # define BOOTCHART_MAX_TIME_SEC        (10*60) /* max polling time in seconds */
  28. #endif /* BOOTCHART */
  29. #endif /* _BOOTCHART_H */

2、添加bootchart进入系统中,执行如下命令:

[html] view plain copy
  1. touch system/core/init/init.c
  2. export INIT_BOOTCHART=true

其中touch命令的作用就是将init.c文件的最后修改时间改为当前时间,这样保证init.c文件会被重新make,而bootchart就是在init.c中被调用的,从而保证bootchart会被编进系统中,重新编译固件编译生成新的可执行文件init,该文件在手机文件系统位于根/下,对应的flash image是boot.img,为此需重新烧写含有新的init的boot.img。

3) bootchart在Android下的应用:

1、将编译生成的带有bootchart工具的Android系统重新烧录到开发板上,并启动系统。

2、在系统data目录创建文件/data/bootchart-start,其内容是bootchart的采样时间:

[html] view plain copy
  1. adb shell 'echo $TIMEOUT > /data/bootchart-start'

其中$TIMEOUT是期望采样的时间,单位为秒,例如要采样两分钟,则执行:

[html] view plain copy
  1. adb shell 'echo 120 > /data/bootchart-start'

3、在系统data目录创建/data/bootchart,执行

[html] view plain copy
  1. adb shell 'mkdir /data/bootchart'

在开发板上系统的/data/目录下新建目录bootchart/用来存放bootchart的测量结果,后面要利用这些文件生成可视化图片。

4、重新启动开发板,在开发板的Android系统的/data/bootchart/目录下将看到以下5个文件组成:

到此为止,bootchart执行测量后生成的测量数据已经完成,看上面有3个.log文件,下面进行生成美观的图形化显示。

需要注意,在开发板上运行bootchart采样完成后若不再使用bootchart则需手工删除文件/data/bootchart-start,否则开发板每次重启时都会运行bootchart。

4) bootchart测量结果图形化显示:

1、生成bootchart.tgz 在data/bootchart目录执行以下命令:

[html] view plain copy
  1. busybox tar -czf bootchart.tgz *

或者使用android源码打包工具中提供的 grab-bootchart.sh文件进行打包,源码路径:system/core/init/grab-bootchart.sh

2、生成美观的图形化显示

拷贝/data/bootchart下刚才生成的 bootchart.tgz到Linux环境下,执行:

[html] view plain copy
  1. java -jar /usr/share/bootchart/bootchart.jar  /path/bootchart.tgz

执行上面命名会在/path目录生成一个bootchart.svgz 问题,下面对其进行重命名

[html] view plain copy
  1. sudo mv bootchart.svgz bootchart.svg.gz

重命名完成后执行

[html] view plain copy
  1. sudo gzip -d bootchart.svg.gz

此时会发现在path目录生成名为bootchart.svg图片,到此大功告成,美观的图形化显示show出来了。

转载地址:http://blog.csdn.net/andylau6789/article/details/24654385

Android bootchart 工具使用相关推荐

  1. imx6 android快速启动,freescale imx6 开机启动速度优化之Bootchart工具的使用问题

    之前有安装bootchart,先执行以下命令,卸载掉bootchart工具 sudo apt-get autoremove bootchart bootchart安装 1.安装 $sudo apt-g ...

  2. java安卓开发工具_推荐几个非常实用的Android开发工具

    工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...

  3. Xamarin.Form的Android SDK工具下载安装

    Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. ...

  4. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  5. 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )

    文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...

  6. 【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )

    文章目录 一. 内存泄漏排查 ( Android Profiler 工具 ) 二. Android Profiler 内存监测相关功能 三.内存快照分析 内存泄漏原理 : 长生命周期对象 , 持有短生 ...

  7. qpython3调用adb_Python实现的基于ADB的Android远程工具

    Python实现的基于ADB的Android远程工具,本工具为原创,涉及知识: - Python编程 - Tkinter GUI编程 - ADB通信机制 代码全文: #!/usr/bin/env py ...

  8. Xamarin.Forms教程Android SDK工具下载安装

    Xamarin.Form的Android SDK工具下载安装 本节将讲解如何下载Xamarin.Form的Android SDK工具,并使用其中的工具管理Android SDK,如何创建模拟器等内容. ...

  9. android sharedpreferences工具类

    今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...

最新文章

  1. shell操作典型案例--FTP操作
  2. SC-控制Windows服务的命令
  3. 数据有了,如何构建数据资产?
  4. 用maya怎么做ak47_方铁做木纹用水性木纹漆怎么样?
  5. winrar5.50去广告教程(仅供学习使用)
  6. Akka Actor远程调用
  7. 从头基于空镜像scratch创建一个新的Docker镜像
  8. 【计算机网络】数据链路相关技术
  9. 为什么人会摆高姿态_为什么感情相处中不要随意掏心掏肺?
  10. JAVA 中的null
  11. Entity Framework 异常档案
  12. 2019测试学习路线图,内附完整自学路线+视频+工具
  13. 计算机图形学核心期刊,CCF 推荐国际国内会议及中文核心期刊要目总览
  14. SpringBoot项目实现qq邮箱验证码登录
  15. 超大背包问题(01背包)
  16. request to https://registry.npmjs.org/@angular%2fcli failed, reason: read ECONNRESET
  17. 【FFmpeg】通过编解码ID(AV_CODEC_ID_*)获取编解码器AVCodec指针的过程分析
  18. C语言输入Aa1Bb2Cc3,《C语言基础知识》PPT课件.ppt
  19. 【ARM】仅用三个GPIO口实现串行SSI信号读取
  20. 智能用户增长: 一站式的消费者资产管理和运营平台

热门文章

  1. html5手机远程控制电脑,教你怎么用手机远程控制电脑
  2. 社区人物志|李昊鹏:日拱一卒,功不唐捐
  3. hive中的UDF 自定义函数 : 如何创建临时/永久函数
  4. wps去除登陆_WPS强制用户登录功能,这是要闹哪样?
  5. 【Python】【Jupyter】Jupyter 的简单使用 与 Python的基本输出输入
  6. 通过cv2.resize()来改变图片大小
  7. 关于MTTF、MTBF、MTRF
  8. 三星android怎么获取root,三星S8如何获取ROOT权限_三星S8ROOT获取教程
  9. Empty suite
  10. LeCo-81.搜索旋转数组(二)