BootPerformance
Boot Performance Overview
With this being a feature spanning multiple releases, we thought it best to have a single point of reference for all the work we are doing and plan to do in the future.
Rationale
(*pulled from /FoundationsTeam/Specs/BootPerformance)
As time has passed, the boot performance of home computers has steadily worsened; it is not longer unusual for a desktop operating system to take well over a minute to be ready from the time the user first presses the power button.
While this has been somewhat acceptable for desktops, where the user at least expects it to take a long time, increased focus on smaller and more mobile devices means that something needs to be done.
For a netbook or mobile device to be truly useful as a convenient, lightweight, computing platform; the boot must take as little time as possible so that the system is immediately useful for the user. Any longer, and they may as well use their desktop or full laptop.
Use Cases
(*pulled from /FoundationsTeam/Specs/BootPerformance)
- It should be possible to power off desktops and work stations over night, to conserve power and energy. Lost time in the morning to switch them back on is undesirable.
- Laptop users want to use their computer as soon as possible without waiting, even though the hardware is lower powered and slower, it should boot quickly.
- Netbooks are marketed to be convenient and portable Internet and computing devices. They must not take any significant time to boot, otherwise it becomes more likely the owner will simply use their desktop computer instead.
- For Ubuntu to be suitable for mobile devices such as cell phones, it must boot quickly to give the "instant on" experience most commonly expected with such commodity devices.
Plans for Jaunty (9.04)
Our approach for this release is to look at what we have, profile and chart it, and identify areas for improvement. We will iterate over this process steadily reducing the time it takes for the system to boot. Our goal for this release is to have a fully functional system, i.e. no sneaky backgrounding to make it appear booted, botted in 25sec (or less). Our reference platform is the Dell Mini 9, as it has the Intel Atom processor and an SSD disk, so makes an excellent benchmark for the Netbook form factor.
Detailed Changes
*In No Particular Order
DESCRIPTION |
Status |
Optimize the boot up process by parallelizing events where possible |
Done |
Fix seahorse agent timeout |
Done |
Investigate why udevadm is taking too long, and improve where possible |
Done |
Reduce the startup time for compiz |
|
Apply Xserver performance patches found in Moblin image, if applicable |
|
Mode-switches and console changes are known to be expensive, in addition they create the intermediate VTs, so start usplash and X on tty1 |
|
Figure out why we set the hardware clock several different times from different places and fix where possible |
Done |
Change the nm-applet connecting animation to something that doesn't adversely affect performance |
|
Add new and faster module-init-tools upload that uses binary indexes |
Done |
Set console font, keymap and utf-8 mode from udev while usplash is running |
|
Update X to save the results of xkbcomp rather than regenerating every single time the server is started |
|
Eliminate various calls to modprobe in initramfs and initscripts where they're not needed |
|
Move some scripts out of rcS and into rc1-5 so they can run while X is up |
|
Eliminate some unnecessary init scripts (ie. wacom, powernowd) |
|
Move from readahead-list to sreadahead |
Done |
Identify any bottlenecks in the gnome login that we can fix |
|
Look at some patches from SuSE that speed up gconf and gnome-settings-daemon |
|
Bootcharts
This section will be updated to show our progress towards our goal of 25sec (or less) for Jaunty on a Dell Mini 9. For reference, we will compare our results to the performance of the latest Moblin v2 development release on a Dell Mini 9. It should be noted that while the boot time is much faster, the current Moblin development image does not provide certain functionality needed for a Dell Mini 9 netbook, e.g. the wireless adapter is not supported, keyboard mapping not fully functional, etc.
Current MoblinV2: 8sec - Alpha
Current Jaunty: 25sec (Includes previous changes with additional improvements. With compiz we are at 30sec).
Previous charts (slower)
30 sec: Includes previous with seahorse fix, and metacity
40 sec: Includes previous with new module-init-tools
56 sec: Jaunty
61 sec: Intrepid with Jaunty Kernel
65 sec: Intrepid
Plans for Karmic (9.10)
Detailed Changes
DESCRIPTION |
Status |
Switch to rsyslogd as possible alternative to using syslogd and klogd |
|
Convert to Upstart where possible to allow for easier customization around boot performance for UNR and OEMs |
|
Leverage Kernel Mode Switching (KMS) as a way to improve the performance of graphics bring up |
|
Switch to metacity-compositing as "Normal" visual effects setting, with compiz as "Extra" |
|
Move to .30+ kernel for fastboot improvements |
|
Goto compiling kernel for i586/i686 arch support |
|
Bootcharts
This section will be updated to show our progress towards maximizing our performance for Karmic on a Dell Mini 9.
Proof of Concept: 8.5 secs
- This is a pure Upstart-based boot of Xubuntu, and not intended to represent a standard Ubuntu Desktop