Difference between revisions of "Bootup Time Working Group"

From eLinux.org
Jump to: navigation, search
(Reformatted boxed text to bulleted list and fixed internal link to PDF file.)
 
(11 intermediate revisions by 3 users not shown)
Line 7: Line 7:
 
== Working Group Information ==
 
== Working Group Information ==
 
=== Charter ===
 
=== Charter ===
  The Bootup Time Working Group shall work to minimize the activation
+
: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.  
  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 ===
 
=== Scope ===
  The scope of this Working Group includes firmware, operating
+
: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.
  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
+
:The Working Group will not consider compiler technologies related to this issue.
  this issue.
 
 
    
 
    
 
=== Current Tasks ===
 
=== Current Tasks ===
See the [[Bootup Time Howto Task List]]
+
:See the [[Bootup Time Howto Task List]]
  
 
== Documents and information ==
 
== Documents and information ==
 
*[[Boot-up Time Definition Of Terms]] - defintions of terms used by the working group
 
*[[Boot-up Time Definition Of Terms]] - defintions of terms used by the working group
 
* /\ - ''no content yet'' - [[Boot-up Time Delay Taxonomy]] - list of delays categorized by boot phase, type and magnitude
 
* /\ - ''no content yet'' - [[Boot-up Time Delay Taxonomy]] - list of delays categorized by boot phase, type and magnitude
* Presentation:  - [[Media:ReducingStartupTime_v0.8.pdf | Reducing Startup Time in Embedded Linux Systems]]
+
* Presentation:  - [[Media:ReducingStartupTime_v0.8.pdf | Reducing Startup Time in Embedded Linux Systems]] This document is a presentation that was prepared based on existing bootup time reduction techniques.
This document is a presentation that was prepared based on existing bootup time reduction techniques.
 
 
* [[Kernel Instrumentation]] - lists some known kernel instrumentation tools.  These are of interest for measuring kernel startup time.
 
* [[Kernel Instrumentation]] - lists some known kernel instrumentation tools.  These are of interest for measuring kernel startup time.
 
* [[Filesystem Information]] - information about bootup times with various file systems
 
* [[Filesystem Information]] - information about bootup times with various file systems
  
 
== Current Projects ==
 
== Current Projects ==
- [[Boot-up Time Reduction Howto]] - this is a project to catalog existing bootup time
+
:[[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.
reduction techniques.  Work on this project is under way.  The wiki will serve
 
as the primary repository of information gathered for this project.
 
  
 
== Specifications ==
 
== Specifications ==
- [[TimingAPISpecification]] - requirements (and specification?) for a simple API to support bootup timing measurements
+
*[[Timing_API_Specification]] - requirements (and specification?) for a simple API to support bootup timing measurements
  - see also [[InstrumentationAPI]] for some background research on this API
+
*see also [[Instrumentation_API]] for some background research on this API
- [[Calibrate Delay Avoidance Specification]] - avoiding the cost of calibrate_delay()
+
* Calibrate Delay Avoidance Specification - avoiding the cost of calibrate_delay()
- [[IDENoProbeSpecification]] - force kernel to observe the IDE "noprobe" command line option
+
** Done - see [[Preset LPJ]]
- [[IDE PreemptSpecification]] - change IDE busywaits into preemptible timeouts
+
*[[IDE_No_Probe_Specification]] - force kernel to observe the IDE "noprobe" command line option
- [[KernelXIPSpecification]] - support Execute-In-Place for the kernel.
+
*[[IDE_Preempt_Specification]] - change IDE busywaits into preemptible timeouts
 +
*[[Kernel_XIP]] - support Execute-In-Place for the kernel.
  
 
== Implementations and/or patches ==
 
== Implementations and/or patches ==
 
=== Measurement Systems ===
 
=== Measurement Systems ===
- [[Printk Times]] - simple system for showing timing information for each printk
+
*[[Printk Times]] - simple system for showing timing information for each printk
- [[Kernel Function Instrumentation]] - more complete system for reporting function timings in the kernel
+
*[[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)
(The patch for this has not been isolated, but it's currently in the CELF tree)
 
  
 
=== Patches for Reducing Bootup Time ===
 
=== Patches for Reducing Bootup Time ===
- [[Preset LPJ]] - Allow the use of a preset loops_per_jiffy value
+
*[[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 No Probe]] - Force kernel to observe the ide<x>=noprobe option
- [[IDE Preempt]] - Make IDE driver init busywaits preemptible
+
*[[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,
+
*[[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)
but is in the CELF source tree)
 
  
 
== External projects ==
 
== External projects ==
 
=== De-serialized user-space service startups (RC scripts) ===
 
=== De-serialized user-space service startups (RC scripts) ===
- IBM article on on using Makefile techniques to express dependencies between services
+
*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
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 http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/
http://www-106.ibm.com/developerworks/linux/library/l-boot.html?ca=dgr-lnxw04BootFaster
+
*Serel project - for parallelizing service startup. Commands are inserted into RC scripts to cause needed services to start (based on XML database of dependencies). See http://www.fastboot.org/
- Richard Gooch project to rewrite boot script system from scratch.  Eliminates lots of
+
*LSB specification for comments in RC Scripts which allow parallization.  See http://www.linuxbase.org/spec/refspecs/LSB_1.1.0/gLSB/initscrcomconv.html
BSD and SYS V-isms, and introduces dependencies.  See  
 
http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/
 
- Serel project - for parallelizing service startup. Commands are inserted into RC scripts
 
to cause needed services to start (based on XML database of dependencies).
 
See http://www.fastboot.org/
 
- 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 ===
- Kexec is a system which allows a system to be '''rebooted''' without going through BIOS.
+
*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
That is, a Linux kernel can directly boot into another Linux kernel, without going through
+
*here's another Kexec white paper: http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw04RebootFast
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 ==
 
== Pre-Linking and Lazy Linking ==
- see this excellent paper for an overview of dynamic linking issues:
+
*see this excellent paper for an overview of dynamic linking issues: http://www.cis.upenn.edu/~mwh/papers_DB/ieee_computer97.pdf
http://www.cis.upenn.edu/~mwh/papers_DB/ieee_computer97.pdf
 
  
 
=== Others ===
 
=== Others ===
 
+
*http://www.bootsplash.org/
- http://www.bootsplash.org/
+
*http://www.linuxdevices.com/news/NS5907201615.html - any [[FSM Labs]] folk have pieces of this?
- http://www.linuxdevices.com/news/NS5907201615.html - any [[FSM Labs]] folk have pieces of this?
 
  
 
[[Category:Boot Time]]
 
[[Category:Boot Time]]
 +
[[Category:CE Linux Working Groups]]

Latest revision as of 17:01, 20 September 2023

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

Table of 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 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.

Specifications

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)

Kexec

Pre-Linking and Lazy Linking

Others