Android——bootchart

摘要:
bootchart:android原生自带的开机性能查看机制。通过收集android开机过程中的各种log数据,终于能够图表的形式展现各个进程在开机过程中的性能。还有个相应的bootchart.h头文件。第二个自然就是抓取的log信息存放的位置了:/data/bootchart那么必定是须要data分区先挂载好,所以启动bootchart的地方得衡量!使用bootchart正常编译进系统之后,就须要手动的去设置一下上面说到的配置了:echo50˃/data/bootchart-start//写个50s进去重新启动就可以。ubuntu的话能够用apt-get去安装bootchart。能够用bootchartbootchart.tgz去解析为图表。

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

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

编译bootchart

bootchart 源代码位于:systemcoreinitootchart.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图片,上一张图:
bootchart

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

就到这里吧~

免责声明:文章转载自《Android——bootchart》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OD调试初步概念——修改窗口标题高维协方差矩阵估计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协...

<Android基础>(一)

第一章Android 2003年10月,Andy Rubin等人创办了Android公司。2005年8月谷歌收购。 1.1 Android全貌 1.1.1 Android系统架构 1.Linux内核层:为Android设备的各种硬件提供底层驱动。如:显示驱动,音频驱动,蓝牙驱动,WiFi驱动,电源管理。 2.系统运行库层:c/c++库为Android层提供...

如何使用php生成唯一ID的4种方法

php生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID。由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠。 生成的唯一ID默认返回的字符串有 13 个字符串长,如果再结合md5()函数,生成的唯一ID可靠性将更高,这种生成的ID比随机性的ID 最大优点在于可...

linux下的文件审计功能(audit inotify)

为了满足这样的需求:记录文件变化、记录用户对文件的读写,甚至记录系统调用,文件变化通知。本文介绍audit和inotify.什么是auditThe Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s)Kern...

Centos7 虚拟机挂载未分配的空间

客户给分配了一台虚拟机,系统安装是Centos7系统,空间为80G,df -h命令查看系统后发现只有40G左右的空间可用,剩余空间未分配。下面记录主要过程: 查看当前已分配的空间 df-h Java代码 [root@centosVM2~]#df-h 文件系统容量已用可用已用%挂载点 /dev/mapper/centos-root35G3.8G32...

kubernetes 1.21部署 kubeprometheus

https://github.com/prometheus-operator/kube-prometheus 1. helm方式 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm search...