Android——bootchart
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的更多相关文章
- Android/Linux boot time分析优化
如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...
- Android系统性能调优工具介绍
http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...
- 【转载】linux内核启动android文件系统过程分析
主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bioni ...
- Android & CM build basics
[CM source code folders] bootable/Among other things, the source for ClockworkMod recovery is in her ...
- 【Java/Android性能优3】Android性能调优工具TraceView使用介绍
本文转自:http://blog.csdn.net/innost/article/details/9008691 在软件开发过程中,想必很多读者都遇到过系统性能问题.而解决系统性能问题的几个主要步骤是 ...
- android.mk android源码编译
http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...
- Android的init过程详解(一)(转)
本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望 ...
- android的init过程分析
前言 Android系统是运作在linux kernal上的,因此它的启动过程也遵循linux的启动过程,当linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿 ...
- Android 启动过程的底层实现
转载请标明出处: http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 androi ...
随机推荐
- HitHub使用
GitHub是个免费的开源仓库,个人及组织可以将源代码上传,既可以让别人参与到自己的项目中,也可以学习与参与到他人的项目中去.免费的GitHub账号的代码仓库(repository)都是公开的,任何人 ...
- luogu P4139 上帝与集合的正确用法(扩展欧拉定理)
本蒟蒻现在才知带扩展欧拉定理. 对于任意的\(b\geq\varphi(p)\)有 \(a^b\equiv a^{b\ mod\ \varphi(p)+\varphi(p)}(mod\ p)\) 当\ ...
- 通过force index了解的MySQL查询的性能优化
查询是数据库技术中最常用的操作.查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后, 执行这条SQL语句,然后将查询到的结果返回给客户端.虽然过程 ...
- 实验了一下对于struct引用的成员的改动
今天写代码的时候,不确定struct用引用传递给函数的时候,他的成员在函数里面改变的时候,是否能影响到外面. 实验了一下 #include <stdio.h> #include <s ...
- [CQOI2009] 叶子的颜色 解题报告(树形DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1304 Description 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为 ...
- 【转载】AngularJS 用$sce服务来过滤HTML标签,解决无法正确显示后台传递的html标签
angular js的强大之处之一就是他的数据双向绑定这一牛B功能,我们会常常用到的两个东西就是ng-bind和针对form的ng-model.但在我们的项目当中会遇到这样的情况,后台返回的数据中带有 ...
- PostgreSQL Replication之第九章 与pgpool一起工作(4)
9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpoo ...
- css inline-block列表布局
一.使用inline-block布局 二.多列布局方法二 <html><head> <meta charset="utf-8"> <tit ...
- EasyUI--Alert()
1.$.messager.alert(title, msg, icon, fn) 2 <script type="text/javascript"> $(functio ...
- @property 的本质是什么?
将访问.变量.访问控制进行了绑定:编译器负责自动合成. @dynamic:不会自动合成成员变量和存取方法. @property 的本质是什么?@property = ivar + getter + s ...