Android开机问题分析工具Bootchart使用方法(一)
- 安装环境
- 修改代码
- 运行bootchart
- 处理数据
- 安装环境
linux下执行 sudo apt-get install bootchart sudo apt-get install pybootchartgui
- 修改代码
当执行发生一下错误提示后
parsing 'bootchart/bootchart.tgz'
parsing 'header'
parsing 'proc_diskstats.log'
parsing 'proc_ps.log'
warning: no parent for pid '2' with ppid '0'
parsing 'proc_stat.log'
merged 0 logger processes
pruned 223 process, 0 exploders, 13 threads, and 1 runs
False
Traceback (most recent call last):
File "/usr/bin/bootchart", line 23, in <module>
sys.exit(main())
File "/usr/lib/python2.7/dist-packages/pybootchartgui/main.py", line 137, in main
render()
File "/usr/lib/python2.7/dist-packages/pybootchartgui/main.py", line 128, in render
batch.render(writer, res, options, filename)
File "/usr/lib/python2.7/dist-packages/pybootchartgui/batch.py", line 41, in render
draw.render(ctx, options, *res)
File "/usr/lib/python2.7/dist-packages/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/python2.7/dist-packages/pybootchartgui/draw.py", line 201, in draw_chart
yscale = float(chart_bounds[3]) / max(y for (x,y) in data)
ZeroDivisionError: float division by zero
修改下列代码内容(位于python安装目录下)
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:
interval = 1
- 运行bootchart
bootchart位于手机 data/bootchart目录下
使用bootchart时执行目录下的enabled文件
touch data/bootchart/enabled
重新开机即可记录时间数据,开机完成后会在统计目录下生成4个文件:
header
process_diskstats.log
proc_ps.log
proc_stat.log
- 处理数据
最后处理数据
第一步打包数据压缩
可以使用自带的脚本,位于AOSP下的system/core/init 下的grap-bootchart.sh,但这里仅仅需要打包而已,不需要这么麻烦
将上述4个文件pull出来直接压缩也行
tar -czf bootchart.tgz *
得到bootchart.tgz文件即压缩成功
第二步交给bootchart去处理数据得到png图片
执行bootchart bootchart.tgz 即可生成png图片进行问题分析
