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"