[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Boot poster challenge



On Sat, 2004-11-13 at 12:18 -0500, Owen Taylor wrote:
> It should be possible to start with a limited set of easily collected
> data and already get a useful picture. Useful data collection could be
> as simple as taking a snapshot of the data that the "top" program
> displays a few times a second during boot. That already gives you a
> list of the running processes, their states, and some statistics about
> global system load.

So I gave this a try:

1. I modified the boot procedure so that early in rc.sysinit, a tmpfs is
mounted and top is run in batch mode (to output every 0.2 seconds).  The
logged output is later parsed only up to the point where gdmgreeter is
running and the system is relatively idle (i.e. boot complete and ready
for login).

2. A Java program parses the log file, builds the process tree and
finally renders a PNG chart.  Processes are sorted by PID and traversed
depth first.

This still needs more work but here's a sneak preview:
http://www.klika.si/ziga/bootchart/bootchart.png

(as a result of http://www.klika.si/ziga/bootchart/bootop.log.gz )

Some processes were filtered out for clarity -- mostly sleepy kernel
processes and the ones that only live for the duration of a single top
sample.  This skews the chart a bit but is definitely more
comprehensible (compare with
http://www.klika.si/ziga/bootchart/bootchart-complete.png ).

Some things I plan on adding:
- start logging earlier in the boot process (possibly in initrd),
- add additional layers (e.g. make use of the kernel patch Arjan
suggested for showing the number of open files),
- improve process tree representation and add dependency lines,
- render SVG instead, for scalability and interactivity.

This definitely helped me with my boot times -- the 4-second load gap at
the start I found to be "modprobe floppy", apparently timing out on my
floppyless laptop :)


Any ideas or comments are welcome,
-- 
Ziga


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]