This page has references for various resources for use by the Bootup Times Working Group.
Table of Contents:
Contents
Working Group Information
Charter
- 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.
Scope
- 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 times. The Working Group will not consider compiler technologies related to this issue.
Current Tasks
See the BootupTimeTaskList
Documents and information
BootupTimeDefinitionOfTerms - defintions of terms used by the working group
- no content yet - BootupTimeDelayTaxonomy - list of delays categorized by boot phase, type and magnitude Presentation: - Reducing Startup Time in Embedded Linux Systems
- This document is a presentation that was prepared based on existing bootup time reduction techniques.
KernelInstrumentation - lists some known kernel instrumentation tools. These are of interest
- for measuring kernel startup time.
FilesystemInformation - information about bootup times with various file systems
Current Projects
BootupTimeReductionHowto - 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.
Specifications
TimingAPISpecification - requirements (and specification?) for a simple API to support bootup timing measurements
see also InstrumentationAPI for some background research on this API
CalibrateDelayAvoidanceSpecification - avoiding the cost of calibrate_delay()
IDENoProbeSpecification - force kernel to observe the IDE "noprobe" command line option
IDEPreemptSpecification - change IDE busywaits into preemptible timeouts
KernelXIPSpecification - support Execute-In-Place for the kernel.
Implementations and/or patches
Measurement Systems
PrintkTimes - simple system for showing timing information for each printk
KernelFunctionInstrumentation - 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
PresetLPJ - Allow the use of a preset loops_per_jiffy value
IDENoProbe - Force kernel to observe the ide<x>=noprobe option
IDEPreempt - Make IDE driver init busywaits preemptible
KernelXIP - 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
http://www-106.ibm.com/developerworks/linux/library/l-boot.html?ca=dgr-lnxw04BootFaster
- 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
http://www.linuxbase.org/spec/refspecs/LSB_1.1.0/gLSB/initscrcomconv.html
Kexec
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: http://devloper.osdl.org/rddunlap/kexec/whitepaper/kexec.pdf
- here's another Kexec white paper:
http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw04RebootFast
Pre-Linking and Lazy Linking
- see this excellent paper for an overview of dynamic linking issues:
Others
http://www.linuxdevices.com/news/NS5907201615.html - any FSMLabs folk have pieces of this?
