0%

基于 Debian 搭建 BootChart 解析环境

BootChart

BootChart 是用于 linux 启动过程性能分析的开源软件工具,它可以在内核装载后就开始运行,记录各个程序启动占用的时间、CPU以及硬盘读写,直到系统启动完成为止。

Android 高版本系统内置了 BootChart, 可以用于分析开机过程的进程状态, 日志抓取可以参考 Android 官方, 这里着重记录一下解析环境的搭建.

https://source.android.com/docs/core/perf/boot-times?hl=zh-cn#bootchart

安装

Ubuntu 18.x

Ubuntu 18.x 系统包管理器中预置了 BootChart, 直接安装即可使用, 但遗憾的是版本太低, 解析有的日志文件会出错.

sudo apt install pybootchartgui

安装完就可以通过 pybootchartgui bootchart.tgz 正常使用了.

Debian 11 / Ubuntu 18+

新版本的操作系统包管理器中已经没有 BootChart 了, 直接使用源码:

# 安装依赖
sudo apt install git pip python-is-python3 libcairo2-dev
pip install pycairo

git clone https://github.com/xrmx/bootchart.git
cd bootchart/pybootchartgui
cp main.py.in main.py

然后就可以通过 ./bootchart/pybootchartgui.py bootchart.tgz 来使用了.

其他

在系统源码 system/core/init/grab-bootchart.sh 有一个一键脚本, 可以参考其中逻辑来使用 BootChart 工具. 这里贴一个结合源码版本的改良版:

#!/bin/sh
#
# This script is used to retrieve a bootchart log generated by init.
# All options are passed to adb, for better or for worse.
# See the readme in this directory for more on bootcharting.

TMPDIR=.
rm -rf $TMPDIR
mkdir -p $TMPDIR

LOGROOT=/data/bootchart
TARBALL=bootchart.tgz

FILES="header proc_stat.log proc_ps.log proc_diskstats.log"

# for f in $FILES; do
#     adb.exe "${@}" pull $LOGROOT/$f $TMPDIR/$f 2>&1 > /dev/null
# done
(cd $TMPDIR && tar -czf $TARBALL $FILES)
~/bootchart-0.14.9/pybootchartgui.py ${TMPDIR}/${TARBALL}
#xdg-open ${TARBALL%.tgz}.png
echo "Clean up ${TMPDIR}/ and ./${TARBALL%.tgz}.png when done"

引用

  • 本文作者: 6x
  • 本文链接: https://6xyun.cn/article/172
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-ND 许可协议。转载请注明出处!