Features/30SecondStartup

= 30 Second Startup =

Summary
Make Fedora boot and shut down faster. The goal is to be at the login screen in 30 seconds and be as fast as possible after the login (gnome-session).

Owner

 * Name: HaraldHoyer
 * Name: MatthiasClasen

Current status

 * Targeted release:  Fedora 10
 * Last updated: 2008-09-16
 * Percentage of completion: 100%
 * readahead saves 10% boot time from init starting to gdm on most systems
 * rhgb is plymouth now
 * gdm not yet tackled (hopefully with F11 with parallel initscripts)

Detailed Description
Earlier attempts at this can be found here Releases/FeatureBootShutdownSpeedup and here Releases/FeatureBetterStartup  (different, but related).

With the switch to upstart we have a lot of necessary pieces in place now to cut down on initscript bloat and use dependencies to parallelize the boot.

Harald recently started some investigations into where the boot time goes, see here , here and here.

Some earlier comments on the problems related to device enumeration are discussed here

Harald has also compared bootcharts of several distributions.

Bugzilla Tracker for slow boot components

Improvements with a modified readahead  setup possible.

Benefit to Fedora
A faster boot makes for happy users.

Scope
Possibly involves all packages that are involved in the boot sequence, udev, module-init-tools, kernel, nash, upstart, readahead.

Test Plan

 * install bootchart
 * modify /sbin/bootchartd to exit on "firefox" not "gdm kdm" etc. and sleep 10-20 seconds after that
 * reboot, login, start firefox, close firefox
 * measure time until closing of firefox

User Experience
Turn on computer, wait 30 seconds, select user on login screen.

Dependencies

 * auditd
 * readahead
 * no regression in other parts of the system

Contingency Plan
This is an incremental feature. If we don't quite get down to 30 seconds, too bad, we can just take whatever improvements we have. If it turns out that readahead cannot be fixed to consistently improve boot speed, we will simply not reenable it.

Documentation
readahead and readahead-collector are started by upstart event scripts upon system start, parallel to rc.sysinit. readahead-collector runs, if /.readahead_collect is present and no file system check or SELinux relabel will take place. /.readahead_collect is created by a monthly cron job. readahead-collector records all file usage for the boot process and creates /etc/readahead.d/custom.early and /etc/readahead.d/early.sorted.

readahead reads /etc/readahead.d/early.sorted and reads ahead all files in it.

To turn off readahead or tweak readahead, /etc/sysconfig/readahead can be edited.

Release Notes
Parallel to the boot process, readahead is now started. Udev may appear to be slower, but in fact readahead reads all disk buffers needed for the boot process in the background and shortens the whole boot process. Creation of the readahead file list will be done monthly and can be triggered manually by touching "/.readahead_collect". /etc/sysconfig/readahead can be edited to turn off readahead-collector and/or readahead.

Comments and Discussion
See Talk:Features/30SecondStartup