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
it.

> >  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.
> 
Ok.

Scott
-- 
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