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

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.

Bootchart-lite Project Home

# 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.

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.

  1. Usage: bootchartd start [PROG ARGS]|stop|init
  2. Options:
  3. start: start background logging; with PROG, run PROG, then kill logging with USR1
  4. stop: send USR1 to all bootchartd processes
  5. init: start background logging; stop when getty/xdm is seen (for init scripts)
  6. Under PID 1: start background logging, then execute $bootchart_init, /init, /sbin/init
  7. This makes it possible to start bootchartd even before init by booting kernel with:
  8. init=/sbin/bootchartd bootchart_init=/path/to/regular/init

Note that if you’re using an initramfs, you’ll need

  1. rdinit=/sbin/bootchartd

instead of

  1. 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:

  1. /path/to/bootchart2/pybootchartgui.py bootlog.tgz

An example graph, generated in a different way, is shown below:

Bootchart.png

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

Categories: