Hey, sorry for the lag, On Wed, 2004-12-01 at 03:59 +0100, Ziga Mahkovec wrote: > On Sun, 2004-11-28 at 20:49 -0500, David Zeuthen wrote: > > So, I've looked a bit more into the booting process and how to optimize > > it. > > Great work! > Thanks. > > The results are pretty good I think, here is the general time line made > > with a wallclock > > > > 00: exit grub; start booting the kernel > > 04: kernel prints audit() > > 11: initrd is mounted; Red Hat nash visible > > mount / ro (normal initrd procedure) > > 13: start bootchart logging; start readahead of approx 193MB files > > sleep until readahead is complete > > 24: readahead done; now > > create /dev and modprobe (in background) > > mount / rw, enable swap > > start xfs > > startx as user davidz in background > > start messagebus > > start hald > > start acpid > > start NetworkManager > > Do you have an idea of how much kudzu, cups and syslogd would add to > these times? rhgb too probably, or would it make sense to dump it > completely? > I think that cups and syslogd are mostly harmless - for capturing the readahead files from my modified kernel I had syslogd log dump to /tmp which I mounted as tmpfs. syslogd should probably start in before gdm, but cupsd can certainly be started later (ideally it should be started on demand). kudzu is a bit more difficult as it brings up dialogs - I think Bill agrees (see the thread on fedora-desktop-list that I linked to in my original mail) that hardware configuration should be handled in the desktop GUI anyway. > > 7. A number of things was started in parallel - I found that doing > > readahead while running modprobe wasn't helping anything; in fact > > it contributed negatively to performance (a bit to my surprise, I > > guess because the kernel was busy). > > You think it might make sense to try running readahead in background, > but after the modules are loaded? Especially if the readahead list > could somehow coincide with the order of services started, to further > reduce seeking. > Or is readahead best left running alone? > Not sure; the big boost really comes from reordering the files on the filesystem - running readahead (which takes 11 seconds) only gives me a usable desktop four seconds earlier. I'm pretty sure no other process should do any disk IO when readahead is running as that will almost certainly incur seek penalties. > > So, I think these numbers are good and there's still some room for > > improvement; e.g. it takes ten seconds from grub to when the initrd is > > mounted - surely the kernel can boot faster? It's after all 25% of the > > time spent from grub until I have usable desktop. > > I did some experiments with bootchart logging in the initrd phase. > Packed the initrd image with bash, ps and a bunch of libraries and > started logging early in the nash script... only to find out that the > whole phase flies by in less than a second :) > Yeah, I found that too. > I would like to visualize the kernel boot though. But I'd need pointers > on what kind of data to collect, and how. > I think some embedded systems (think DVD players) use patches to boot the kernel faster - I wonder what the status of adding them to mainline are? > > Thanks a lot to Ziga Mahkovec for the bootchart software - it's been > > very useful. > > BTW, I've had loads of fun with SVG lately, so you might want to try > regenerating these charts. Makes them scalable and about 15x smaller in > file size. Have a look at the SVG samples (rsvg does a pretty good > job): > http://www.klika.si/ziga/bootchart/#Samples > Awesome. Cheers, David