Ubuntu boot speed fall in Hardy

Scott James Remnant scott at canonical.com
Tue May 13 11:29:21 UTC 2008

On Mon, 2008-05-12 at 23:12 +0200, Krzysztof Lichota wrote:

> Sorry about that. It just got lost in my mailbox.
> And about lack of feedback, I meant feedback from users. The kernel
> has been downloaded 280+ times and I got something like 2 reports from
> users. I don't know if it works or if it crashes somebody's machines.
Glad to get back in contact!

I tend to assume that if people aren't complaining, that they're
happy ;)  If it was crashing their machines, I'm sure you'd know about

> >  Problem with prefetch is that it's quite a lot of code, in different
> >  places, and zero documentation on how it works and which bit does what.
> I agree the documentation needs to be improved. I will add description
> of implementation in project wiki. The comparison with other
> prefetching solutions would also clear up things a bit.
That would be very useful, the 1000ft overview helps people find their
own answers to their questions

> >  For example, how does it determine which blocks need prefetching?
> It monitors page cache to see which pages are used by processes.
What's the "it" in this case?  The kernel module?

> >  Where/how are these lists of blocks stored?
> They are stored in /prefetch directory as prefetch lists for each
> traced app and for boot stages.
> Each file contains list of tuples (device, inode, start-in-pages,
> length-in-pages) which describe what to prefetch.
What creates these files?  A userspace daemon or the kernel module
itself?  Is this a real filesystem or a virtual one?

Shouldn't this be /etc/prefetch? :)

> >  What decides when to load blocks?
> Blocks are loaded when application starts (for application
> prefetching) or when appropriate boot script is started (for boot
> prefetching).
What determines whether there is a prefetch file for that application?
What keeps that up to date?

> >  What if the filesystem isn't mounted yet (/usr), how can the loading be
> >  staged?
> Boot prefetching is split into 3 phases: initial boot (with only root
> mounted), boot with all partitions mounted and GUI boot. Each stage
> has separate prefetching list.
How are these phases delineated?  Does the kernel need to be told what
stage it is in, or does userspace determine which set of prefetch files
may be used?

> >  Could we use the lists to sort the LiveCD filesystem generation?
> It depends what you want to do with it. If you want to feed the list
> to mksquashfs, it can be done. If you want to add prefetching list to
> live CD, this would be harder, as inode numbers are generated during
> generation of SquashFS image.
I guess we'd want to order the SquashFS itself, a bit like pre-defrag ;)

> >  Could we use the lists to sort the order in which we copy files during
> >  the install?
> You mean to copy in such order that after boot from disk the system
> boots faster?
> This is interesting issue. The list contains page ranges and I am not
> aware of any tool which allows to specify which ranges of files to
> copy and when. The ext3 allocator would reorganize it anyway. IMO
> running my reordering tool after copying would be simpler.

Scott James Remnant
scott at canonical.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <https://lists.ubuntu.com/archives/ubuntu-devel-discuss/attachments/20080513/326f415a/attachment.pgp>

More information about the Ubuntu-devel-discuss mailing list