Ubuntu boot speed fall in Hardy
Scott James Remnant
scott at canonical.com
Thu May 22 08:13:44 UTC 2008
On Tue, 2008-05-13 at 14:07 +0200, Krzysztof Lichota wrote:
> > > > 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?
>
> The kernel module writes it. For boot prefetching, userspace script
> processes the lists as they are merged and sorted for last 3 runs.
>
I noticed that you get lists (in /) for the phases, but files
in /prefetch for applications named PATH-stamp?
Could you give a little more detail on what files to expect, and what
the content/format of those files are?
> > > > 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?
>
> Init scripts (similar to readahead scripts) are run and they tell
> kernel module which files to load and when.
> So boot prefetching can be easily changed by modifying these scripts,
> without touching the kernel part.
>
I noticed the phases stuff.
Have you considered instead using cgroups to collate them? Phases are
divided by time, which becomes problematic with a boot sequence running
in parallel.
A cgroups subsystem for prefetch would solve this, since cgroups are
inherited from parent to child.
E.g.
* rcS is placed into the "boot" cgroup
(thus all apps run by it are)
* rc2 is placed into the "system" cgroup
* gdm is placed into the "gui" cgroup
You can then still generate app prefetch lists for individual apps
(since apache can be started by hand, _and_ by rc2). But also we can
generate combined lists for each cgroup.
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/20080522/9ad347d9/attachment.sig>
More information about the Ubuntu-devel-discuss
mailing list