adventures in booting
David Zeuthen
david at fubar.dk
Thu Dec 2 16:48:56 UTC 2004
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
More information about the fedora-devel-list
mailing list