Bootup Time Working Group

Revision as of 11:32, 4 May 2009 by Wmat (talk | contribs) (small formatting fix)
Jump to: navigation, search

This page has references for various resources for use by the Bootup Times Working Group.

Table of Contents:

Working Group Information


 The Bootup Time Working Group shall work to minimize the activation
 and deactivation times of Linux systems.  This includes making
 improvements in cold start bootup times and shutdown times, as well
 as improvements in the speed of suspend and resume operations.
 The Working Group shall establish requirements for Linux systems
 and sub-systems in order to accomplish this goal of timely
 activation and deactivation. Also, the Working Group will evaluate
 and recommend technical solutions and implementations which
 accomplish this goal. 


 The scope of this Working Group includes firmware, operating
 system kernel, and user space issues.  It may include work to accelerate
 device initialization by means of coordination between the firmware
 and the OS, work inside the OS to reduce the time to initialize kernel
 sub-systems and device drivers, and work to increase application
 startup speed.  Also, the Working Group may specify, evaluate or
 recommend instrumentation and tools for analysing bootup and shutdown
 The Working Group will not consider compiler technologies related to
 this issue.

Current Tasks

See the Bootup Time Howto Task List

Documents and information

Current Projects

- Boot-up Time Reduction Howto - this is a project to catalog existing bootup time
reduction techniques.  Work on this project is under way.  The wiki will serve
as the primary repository of information gathered for this project.


- TimingAPISpecification - requirements (and specification?) for a simple API to support bootup timing measurements
  - see also InstrumentationAPI for some background research on this API
- Calibrate Delay Avoidance Specification - avoiding the cost of calibrate_delay()
- IDENoProbeSpecification - force kernel to observe the IDE "noprobe" command line option
- IDE PreemptSpecification - change IDE busywaits into preemptible timeouts
- KernelXIPSpecification - support Execute-In-Place for the kernel.

Implementations and/or patches

Measurement Systems

- Printk Times - simple system for showing timing information for each printk
- Kernel Function Instrumentation - more complete system for reporting function timings in the kernel
(The patch for this has not been isolated, but it's currently in the CELF tree)

Patches for Reducing Bootup Time

- Preset LPJ - Allow the use of a preset loops_per_jiffy value
- IDE No Probe - Force kernel to observe the ide<x>=noprobe option
- IDE Preempt - Make IDE driver init busywaits preemptible
- Kernel XIP - Allow kernel to be executed in-place in ROM or FLASH (code is not isolated yet,
but is in the CELF source tree)

External projects

De-serialized user-space service startups (RC scripts)

- IBM article on on using Makefile techniques to express dependencies between services
and support parallel service start.  See
- Richard Gooch project to rewrite boot script system from scratch.  Eliminates lots of
BSD and SYS V-isms, and introduces dependencies.  See
- Serel project - for parallelizing service startup. Commands are inserted into RC scripts
to cause needed services to start (based on XML database of dependencies).
- LSB specification for comments in RC Scripts which allow parallization.  See


- Kexec is a system which allows a system to be rebooted without going through BIOS.
That is, a Linux kernel can directly boot into another Linux kernel, without going through
firmware.  See the white paper at:
- here's another Kexec white paper:

Pre-Linking and Lazy Linking

- see this excellent paper for an overview of dynamic linking issues:


- - any FSM Labs folk have pieces of this?