From: eLinux.org
Bootchart
Bootchart is a tool for performance
analysis and visualization of the Linux boot process. Resource
utilization and process information are collected during the user-space
portion of the boot process and are later rendered in a PNG, SVG or EPS
encoded chart. For embedded systems several developers have tried to use
bootchart to analyze boot time, but problems arose. There have been
several efforts to modify bootchart to make it more useful for embedded
development.
Contents
Research & Presentations
Timechart
- Tool introduced on Arjan Van de Ven’s
blog - Now available in the mainline Linux kernel. It uses the ‘perf’
infrastructure. Hence, you need a recent enough kernel (2.6.32 or
later). - See
tools/perf/builtin-timechart.c
and
tools/perf/Documentation/perf-timechart.txt
in the kernel sources for details.
Bootchart-Lite
bootchart-lite-en.pdf
Presentation by Shuuji Miyake of Fujitsu Software Technologies Limited,
about bootchart deficiencies in the embedded space and ideas for fixing
them.
- Not sure this is related to bootchart-lite project on Google Code,
below—that was created by Fred Chien of
OpenMoko.
# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout
http://bootchart-lite.googlecode.com/svn/trunk/
bootchart-lite-read-only
ubootchart
Like Bootchart Lite, an implementation of the ideas from “embootchart”.
EmBootchart
- Visualizing Resource Usage During
Boot- Presentation on ‘embootchart’ by Matthew Klahn and Moosa Muhammad
of Motorola about bootchart deficiencies in the embedded space, and
a program (unfortunately never published) to fix them.
- Presentation on ‘embootchart’ by Matthew Klahn and Moosa Muhammad
BusyBox
Busybox has a C implementation of bootchartd. It compiles to less than
40k (static uclibc i386 build). It will be available in the
busybox-1.17.0 release. Please send bug reports, improvements to busybox
mailing list.
Usage: bootchartd start [PROG ARGS]|stop|init
Options:
start: start background logging; with PROG, run PROG, then kill logging with USR1
stop: send USR1 to all bootchartd processes
init: start background logging; stop when getty/xdm is seen (for init scripts)
Under PID 1: start background logging, then execute $bootchart_init, /init, /sbin/init
This makes it possible to start bootchartd even before init by booting kernel with:
init=/sbin/bootchartd bootchart_init=/path/to/regular/init
Note that if you’re using an initramfs, you’ll need
rdinit=/sbin/bootchartd
instead of
init=/sbin/bootchartd
Note also that bootchartd tries to create a gzipped tarball, so you
either need a full tar with gz support, or you need to enable
FEATURE_SEAMLESS_GZ in busybox. If ‘tar -z’ is not working, bootchartd
will not produce output.
To use
To use this, capture the bootchart information using bootchartd, then
transfer the information to your host machine, and use bootchart to
produce a graphic chart of the boot sequence.
The host ‘bootchart’ provided by Ubuntu-based hosts uses
pybootchartgui to generate a
graph from the collected data. However, that version of pybootchartgui
does not work well with the data generated by busybox bootchartd. A
newer project bootchart2 has
improved pybootchartgui and included it in their sources, and this works
fine with busybox bootchartd data.
After downloading bootchart2 and running ‘make’, you can generate a
graph (bootchart.png) with:
/path/to/bootchart2/pybootchartgui.py bootlog.tgz
An example graph, generated in a different way, is shown below:
Related projects
SystemTap Scripts
A related project is a set of System Tap
scripts to provide information about boot time. See
Bootprobe
Updated Fork
Bootchart has been forked and updated and can be found on github
https://github.com/mmeeks/bootchart
(Main changes: no java, better visualization)
Another fork (the same?) can be found here: Updated
Bootchart