Boot Process Visualization
zigam writes "The time needed to boot desktop Linux systems is becoming an issue. That's why I recently took the challenge posted by Red Hat's Owen Taylor on the Fedora developers list and came up with a tool for visualization of the boot process. It collects performance data during the boot up and then renders an SVG or PNG performance chart. It immediately helped Red Hat developers solve some issues and I have since received boot charts from other GNU/Linux developers as well. Solaris kernel developers reported success in improving their boot process too." Update: 12/15 20:04 GMT by T : Sorry, someone decided your time was worth wasting; no more mirrored bootchart.
There are some charts linked from a post here.
I'd like to see other distros do what Red Hat is doing to Fedora's boot screen: Using X resolutions for the startup.
The desktop oriented distros have been doing that since before Fedora existed.
KFG
http://www.coattails.net/slashdot/bootchart.png
Try reading David Zeuthen's analysis of the FC boot process (with charts) over on the fedora archives. Very interesting - among other things, nearly 200 MB of files(!) are buffered while starting GNOME - quite a footprint - and apparently by putting those files on a separate (non-fragged) partition he sped process by nearly 30 seconds and reports OOo and Firefox start times of around 3 seconds.
Here's an example image for you to ogle:
http://people.redhat.com/davidz/bootchart.png.
Here's the mirror:
bootchart.sourceforge.net
Ziga
This is *NOT* a slashdotting. It's someone trying to serve a website from a desktop Windows OS (i.e. XP Pro or Windows 2000 Pro). There is a 10 client limit on non-server versions of IIS.
If you search around in the Google Cache, you can find a link to a Mandrake Wiki that has several bootchart images.
- Tash
Here are some pictures that are not slashdotted yet: one, two, three.
They are taken from here.
I've mirrored some of the site here:
m l
http://slushdot.org/mirror/visualization/index.ht
If you have the whole site email it to me and I'll host it.
I used a much simpler approach to speed up the boot process: On my RedHat 9 box, instead of starting gdm by init, I made a script in /etc/rc.d/init.d, and a link to it in /etc/rc.d/rc5.d, to start gdm. Gdm is started right after networking is up. Now my login prompt is quickly available while in the background the rest of the bootprocess continues.
I use two runlevels for this reason..., in my laptop runlevel 2 means X11 but no network, no servers, ... it is amazing how fast starts in runlevel 2. (no fam, thought :-(( but still very useful for presentations, where yo don't want to waste time on booting process)
I believe you are thinking along the lines of what bootsplash http://www.bootsplash.org/ does. This is nothing similar; it's designed to visualize where performance bottlenecks are located during the startup procedures. But then, after reading all of the other commentary on here, you may have picked up on that fact already. In that case, I apologize for the redundancy.
A wise person makes his own decisions, a weak one obeys public opinion. -- Chinese proverb
That's what the idea here is. The Ubuntu guys, and I'm sure people from other distributions, are currently working on getting boot time to gdm down to a much more reasonable value. Since Ubuntu is meant as a desktop, anything that is not absolutely necessary to use the system is loaded after gdm. Note, though, that this doesn't speed up TOTAL boot time, only time to load the login manager. The problem with this is that you get a false sense of completion (like in Windows), where the system is still very slow for the next 30 seconds or however long it takes to start the rest of the services.
Ask and you shall receive...
Take a look at this article that I wrote up after I posted instructions on how to use lpd to spool mp3s. I was even lucky enough to get some of the logs from the mirrors for analysis. You can see the original slashdot article here.
My Slashdot account is old enough to drink...
I don't know why this didn't get modded up the first time, but here's the mirror again: bootchart.sourceforge.net.
Ziga
If you don't know what alt-sysrq does, you probably don't have it enabled.
If it had been enabled, it would likely have worked, since it is recognized directly by the kernel.
The s, u, and b are hit sequentially while holding alt-sysrq, so you don't need a third hand to do it. The s causes the kernel to sync the discs, the u remounts your filesystems read-only, and the b causes an immediate reboot.
Now, all that aside, there's no reason why you couldn't do this, right now, with tools you already have. (Note: This hijacks runlevel 4 for a completely different use; if you modify chkconfig to work with more runlevels, you could avoid that.)
Put a line like this in /etc/inittab:
(I'd recommend deleting the existing runlevel 4 script too.)
Now use chkconfig to turn everything off in runlevels 3 and 5 that should be started "late":
This isn't perfect, and redirecting the output of rc is probably a good idea. Also, it might be better to just remove the daemons in question from the old runlevels. And I haven't looked into the shutdown behavior.
A much better solution would be to say that for each service that needs to be started which services must be started before it and to provide a priority for each service. The boot loader could then use this information to start processes in parallel giving priorities as needed.
"Make" can already do this in parallel, and is an appropriate tool for specifying dependencies. It would be a simple matter to use it as the primary boot manager rather than shell scripts.
As an embedded programmer, I've got to get many startup diagnostics and initializations done in the shortest time possible (under 1 second usually) - otherwise you'd be waiting for your car to boot every time you turn on the key. Everything in parallel that can be. Dependancies are mapped out and a static start sequence is defined. Linux has a more variable set of things to do, so I'd expect a more flexible implementation. This shocks me that there is NO implementation.
It doesn't matter what MS does, every application wants load at boot time so it will respond quicker later - this just kills my boot time. Yah, a whole tray full of crap starts and I sometimes use one of those things.
In Gentoo (well, at least in ~x86), just edit your /etc/conf.d/rc and set RC_PARALLEL_STARTUP="yes", and now at boot, your daemons start in parallel if possible. Don't know if other distros can do this yet - it looks like Gentoo's own invention.
Briefly, it was an actual mirror of one of the images from the story. However, the mirror-poster soon changed it. What can ya do? It's hard to find good parents these days, and many kids just have no better outlet once the rubber sheets are in place.
timothy
jrnl: http://tinyurl.com/c2l8yr / foes: http://tinyurl.com/ckjno5