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.sig>
More information about the Ubuntu-devel-discuss
mailing list