bootchart:android原生自带的开机性能查看机制。通过收集android开机过程中的各种log数据,终于能够图表的形式展现各个进程在开机过程中的性能。(博客不能断…)

撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/45933943本文来自 【jscese】的博客。

编译bootchart

bootchart 源代码位于:\system\core\init\bootchart.c 属于init

查看相应Android.mk,当中有这么一段:

ifeq ($(strip $(INIT_BOOTCHART)),true)
LOCAL_SRC_FILES += bootchart.c
LOCAL_CFLAGS += -DBOOTCHART=1
endif

非常明显的变量控制编译了,假设想要把bootchart编译进init。要么就export 这个变量为true,要么就定义赋值。

还有个相应的bootchart.h 头文件。里面有宏控制,想要用bootchart,怎么改就不多说了~

原生的启动是放在init.c的main里面:

#if BOOTCHART
queue_builtin_action(bootchart_init_action, "bootchart_init");
#endif

能够看到首先跑的应该是bootchart里面的 bootchart_init 这个函数

能够略微看下bootchart的源代码,当中有这么一句:

 proc_read( LOG_STARTFILE, buff, sizeof(buff) );
...
int fd = open( LOG_ACCT, O_WRONLY|O_CREAT|O_TRUNC,0644);
//这些文件都是/data分区以下的

第一个proc_read读取的算是一个配置时间: /data/bootchart-start,来决定bootchart从开启到结束的时间。

第二个自然就是抓取的log信息 存放的位置了:/data/bootchart

那么必定是须要data分区先挂载好,所以启动bootchart的地方得衡量!


使用bootchart

正常编译进系统之后,就须要手动的去设置一下上面说到的配置了:

echo 50 > /data/bootchart-start
//写个50s进去

重新启动就可以。执行正常的话,可在/data/bootchart以下看到五个文件:

root@86v:/ # ll /data/bootchart
-rw-rw-rw- root root 517 2015-05-23 15:17 header
-rw-r--r-- root root 0 2015-05-23 15:17 kernel_pacct
-rwxr-xr-x root root 196608 2015-05-23 15:17 proc_diskstats.log
-rwxr-xr-x root root 3735552 2015-05-23 15:17 proc_ps.log
-rwxr-xr-x root root 131072 2015-05-23 15:17 proc_stat.log

打包为bootchart.tgz:

busybox tar zcvf bootchart.tgz header kernel_pacct proc_diskstats.log proc_ps.log proc_stat.log

adb pull 或者直接copy出来。放到pc上。

ubuntu的话能够用apt-get 去安装bootchart。能够用bootchart bootchart.tgz 去解析为图表。有可能会有错误。网上有人给出来了改动相应python脚本的方法,不难。

可惜我已经不在ubuntu下了,诸多不便 - -

Windows下的话,得去找个bootchart相应的jar包,能够从ubuntu上bootchart安装文件夹下拷出来

java -jar bootchart.jar bootchart.tgz

没有错误的话能够得到一张bootchart.png图片,上一张图:

通俗的理解就是 蓝色为cpu占用 ,粉色为io等待,也就是文件操作的耗时,横轴为起机时间,以进程为单位描写叙述。

就到这里吧~

Android——bootchart的更多相关文章

  1. Android/Linux boot time分析优化

    如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...

  2. Android系统性能调优工具介绍

    http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...

  3. 【转载】linux内核启动android文件系统过程分析

    主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...

  4. Android & CM build basics

    [CM source code folders] bootable/Among other things, the source for ClockworkMod recovery is in her ...

  5. 【Java/Android性能优3】Android性能调优工具TraceView使用介绍

    本文转自:http://blog.csdn.net/innost/article/details/9008691 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是 ...

  6. android.mk android源码编译

    http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...

  7. Android的init过程详解(一)(转)

    本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望 ...

  8. android的init过程分析

    前言 Android系统是运作在linux kernal上的,因此它的启动过程也遵循linux的启动过程,当linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿 ...

  9. Android 启动过程的底层实现

    转载请标明出处:  http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 androi ...

随机推荐

  1. (四)React高级内容

    1. React developertools安装及使用 2. PropTypes与DefaultProps 讲一下PropTypes, 先拿TodoItem来说: 从几种类型中选: 3 props ...

  2. [NOIP2003提高组]侦探推理

    题目:洛谷P1039.Vijos P1106.codevs1089. 题目大意:给你一系列证词,要你求出谁是凶手.具体题目见原题. 解题思路:我们枚举犯人和星期,一个一个进行判断.如果成功则记录答案, ...

  3. BZOJ3413: 匹配(后缀自动机,Parent树,线段树合并)

    Description Input 第一行包含一个整数n(≤100000). 第二行是长度为n的由0到9组成的字符串. 第三行是一个整数m. 接下来m≤5·10行,第i行是一个由0到9组成的字符串s, ...

  4. C语言运行时数据结构

    段(Segment): 对象文件/可执行文件: SVr4 UNIX上被称为ELF(起初"Extensible Linker Format", 现在"Executable ...

  5. 关于数组array_diff(array1, array2)求差集来比较数组是否相等的问题细究

    无意中发现很多朋友都喜欢使用array_diff(array1, array2)来判断两个数组是否相等, 我自己也偶尔会这么使用 但是今天我在写代码的过程中无意发现这么做是不准确的. 首先我们来看一下 ...

  6. wipefs进程是啥,占用了百分之90多的cpu

    http://www.cnblogs.com/liuchuyu/p/7490338.html

  7. POJ 3254 Corn Fields 状态压缩DP (C++/Java)

    id=3254">http://poj.org/problem? id=3254 题目大意: 一个农民有n行m列的地方,每一个格子用1代表能够种草地,而0不能够.放牛仅仅能在有草地的. ...

  8. Android BlueDroid(二):BlueDroid蓝牙开启过程init

    关键词:bluedroid  initNative enableNative BTIF_TASK  BTU_TASKbt_hc_work_thread set_power  preload  GKI作 ...

  9. Unity3D的场景单位 和 3D建模软件的单位 之间的关系

    转载自 : http://www.ceeger.com/Unity/Doc/2011/3D_to_Unity.html Date:2011-08-24 03:52 Unity的系统单位为米,其他3D软 ...

  10. poj_2187凸包,暴力解法

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...