Bootchart记录
- adb shell touch /data/bootchart/enabled
(首先使能 bootchart,bootchart 操作的前提是存在 enable 标记,不需要收集数据的时候删除此标记) - 手机执行adb reboot重启后,adb shell进入/data/bootchar后,有以下几个文件:header proc_diskstats.log proc_ps.log proc_stat.log(以及上一步生成的enable)
- tar -zcf boochart.tgz * 生成bootchart.tgz
- adb pull data/bootchar/bootchart.tgz 到本地PC端
- sudo apt-get install bootchart
sudo apt-get install pybootchartgui
sudo apt install xdg-utils( linux PC机安装bootchart工具) - 拷贝 bootchart.tgz 到 PC 中,并执行下面的命令生成图表:bootchart bootchart.tgz
报错信息如下:
ubuntu@ubuntu-users:/mnt/work/Tool/Bootchart$ bootchart boochart.tgz
parsing ‘boochart.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 143 process, 0 exploders, 5 threads, and 2 runs
False
Traceback (most recent call last):
File “/usr/bin/bootchart”, line 23, in
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 256, in render
curr_y = draw_header(ctx, headers, off_x, duration)
File “/usr/lib/python2.7/dist-packages/pybootchartgui/draw.py”, line 341, in draw_header
draw_text(ctx, txt, TEXT_COLOR, off_x, header_y)
File “/usr/lib/python2.7/dist-packages/pybootchartgui/draw.py”, line 111, in draw_text
ctx.show_text(text)
cairo.Error: input string not valid UTF-8
解决方案如下:
报错信息如下:
ubuntu@ubuntu-users:/mnt/work/Tool/Bootchart$ bootchart boochart.tgz
parsing ‘boochart.tgz’
parsing ‘enabled’
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 184 process, 0 exploders, 11 threads, and 1 runs
False
Traceback (most recent call last):
File “/usr/bin/bootchart”, line 23, in
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
修改如下:
#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))
再执行bootchart bootchart.tgz生成png图片