Using Bootchart on Android 在开机测量中的应用

Bootchart is a system designed to show a graphical display of the activity of a system during boot.

。。。

省略官方简介,下面是相关连接:

http://www.elinux.org/Using_Bootchart_on_Android;

http://www.bootchart.org/;

1、Installing the bootchart tool 安装工具

sudo apt-get install bootchart

2、Building ‘init‘ with bootchart support 重新编译init

可以重新编译整个工程

$ cd mydroid
$ export INIT_BOOTCHART=true
$ make clean
$ make

或者是单独编译init模块

 $ touch system/core/init/init.c
 $ m INIT_BOOTCHART=true

3、Installing ‘init‘ into your system image 重新加载init模块

重新刷机或者adb push 到android机台,注意更改权限;

adb push out/target/product/generic/root/init /init

4、Triggering bootchart functionality on system boot 使能bootchart 工具

adb shell ‘echo 120 > /data/bootchart-start‘

5、Retrieving the collected data from the system 获取数据

在/data/bootchart文件下bootchart 生成的数据

可以使用bootchart 自带的脚本grab-bootchart.sh进行拷贝和打包;也可以自行进行adb pull到ubuntu机器中进行打包;

6、Generating the graphic from the data 生成png图片

$bootchart ./bootchart.tgz

执行该命令后,直接生成错误提示:

    parsing ‘header‘  
    parsing ‘proc_stat.log‘  
    parsing ‘proc_ps.log‘  
    warning: no parent for pid ‘2‘ with ppid ‘0‘  
    parsing ‘proc_diskstats.log‘  
    parsing ‘kernel_pacct‘  
    merged 0 logger processes  
    pruned 63 process, 0 exploders, 2 threads, and 0 runs  
    False  
    Traceback (most recent call last):  
      File "/usr/bin/bootchart", line 23, in <module>  
        sys.exit(main())  
      File "/usr/lib/pymodules/python2.6/pybootchartgui/main.py", line  
    137, in main  
        render()  
      File "/usr/lib/pymodules/python2.6/pybootchartgui/main.py", line  
    128, in render  
        batch.render(writer, res, options, filename)  
      File "/usr/lib/pymodules/python2.6/pybootchartgui/batch.py", line  
    41, in render  
        draw.render(ctx, options, *res)  
      File "/usr/lib/pymodules/python2.6/pybootchartgui/draw.py", line  
    282, in render  
        draw_chart(ctx, IO_COLOR, True, chart_rect, [(sample.time,  
    sample.util) for sample in disk_stats], proc_tree)  
      File "/usr/lib/pymodules/python2.6/pybootchartgui/draw.py", line  
    201, in draw_chart  
        yscale = float(chart_bounds[3]) / max(y for (x,y) in data)  
    ZeroDivisionError: float division

该错误是由python版本导致,进行以下修改可以解决该问题:修改下/usr/share/pyshared/pybootchartgui/目录的draw.py,parsing.py,samples.py三个文件:

draw.py

    将200,201行由:  
    xscale = float(chart_bounds[2]) / max(x for (x,y) in data)  
    yscale = float(chart_bounds[3]) / max(y for (x,y) in data)  
    改为:  
    xscale = float(chart_bounds[2]) / max(0.00001, max(x for (x,y) in data))  
    yscale = float(chart_bounds[3]) / max(0.00001, max(y for (x,y) in data))

parsing.py

在156行后添加:  
    if interval == 0:  
        interval = 1
修改后如下:  
    sums = [ a - b for a, b in zip(sample1.diskdata, sample2.diskdata) ] 
    if interval == 0:
        interval = 1

samples.py

在81行后添加:  
    if interval == 0:  
        interval = 1
修改后如下:
    def calc_load(self, userCpu, sysCpu, interval):
        if interval == 0: <br>  
            interval = 1

再次执行,便可以顺利生成bootchart.png文件

$bootchart ./bootchart.tgz

生成的png文件如下所示:

参考文章:

http://blog.csdn.net/harry_helei/article/details/8545032

时间: 2024-11-06 07:43:58

Using Bootchart on Android 在开机测量中的应用的相关文章

源码中修改Android的开机画面和动画【转】

本文转载自:http://blog.csdn.net/dddxxxx/article/details/54343976 参照文章:http://blog.csdn.net/a345017062/article/details/6222962.http://bbs.gfan.com/android-146253-1-1.html. Android系统开机显示画面分成两个过程,第一个过程从按电源键到Frameworks启动为止.第二个过程从Frameworks启动完成到Launcher程序启动完成.

android 程序开机自启动

今天遇到程序开机自启动,然后查了一下,很简单,就记录一下. 开机自启动,一般我们是开启启动一个广播,然后在广播里启动Activity或者别的服务. 我们要做的很简单,就是在AndroidManifest.xml  里面的广播中添加一行代码 <receiver android:name="广播名称"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED

Android文本的测量和绘制

翻译与Chris Banes的博客   原文地址 如果你想手动在Android Canvas上画些什么东西,你最好从绘制文本开始. 文本绘制之前,你需要知道测量文本的绘制位置,计算文本X/Y轴的位置.                                                                                         最近我在一款APP中,需要在横向和纵向的画布上绘制一些以文本为中心的文字.于是我用了下面这些代码: Paint mText

[转载]Android系统开机画面的实现

Android系统开机画面分为下面三个阶段: 1.开机图片:Android内核是基于标准内核的,对linux比较熟悉,特别是在开发板上移植过Linux系统的人就知道在内核引导过程中会显 示出一 个小企鹅的图片,这就是第一阶段的开机图片,相信大家知道怎么去修改它.Android1.5及其以上版本都取消了这个图片的显示,具体的看内核相关代码 就知道了: 2.开机文字:Android系统开机会出现“A N D R O I D”这行字,相信大家都不陌生,那么这个怎么修改呢?相关文件在Android系统源

Android APP 调试过程中遇到的问题。

调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Android APP 调试过程中遇到的问题. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007192169/AndroidAPP调试过程中遇到的问题.html

android插件化-apkplug中OSGI服务基本原理-08

我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService 一 OSGI与android Service 异同点 OSGI服务与android Service概念差不多也是Service ,Client 关系. android Service接口  --service.AIDL OSGI接口                --java interface 所以android 进程间通信Service只能传递序列

(转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别

原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法含义以及区别 一[email protected]代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@android:type/name android:textColor=&

Android Studio右键选项中没有Git?

从Git clone一个Project并打开后,都会习惯性的像使用Eclipse一样,选中工程右键,选择Git的对应版本控制选项. 如下图,你只看到了svn. 如何配置才能在右键选项中看到Git呢,我直接上图吧,大家根据下图来配置就可以了.配置其他的右键选项版本控制工具也是一样的. Android Studio右键选项中没有Git?,布布扣,bubuko.com

Android Drawable 关于selector中state_pressed=&quot;true&quot;的位置顺序

界面中有一个按钮使用这样的样式: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <corners android:radius="10dp"/> <solid a