Boot-up Time Reduction Howto
来源:互联网 发布:淘宝最迟多久确认收货 编辑:程序博客网 时间:2024/06/10 09:53
The items on this page constitute a list of existing techniques for reducing bootup times for embedded systems. Some of these items may also be applicable to desktop or enterprise systems, but that is not the focus.
For each individual item below, a separate page should exist. If it doesn't already exist, a new page should be created using the !HowtoTemplate. Links listed in red below are pages that are not created yet. To sign up for a task related to this HOWTO, please see the Bootup Time Howto Task List.
Contents
[hide]- 1Introduction
- 1.1Bootup Phases
- 1.2Main Technique Types
- 2Bootup Time Reduction Technique Outline
- 3Firmware Phase
- 4Kernel Phase
- 5User Space Phase
- 6General Reduction Techniques
- 7Table of Reduction Techniques
- 8Potential Techniques
Introduction
Bootup Phases
This document divides the bootup process into 3 main phases:
- Firmware initialization phase
- Kernel initialization phase
- User Space initialization phase
User Space usually consists of a few distinct phases also:
- Initialization scripts (RC scripts, for desktop systems)
- This is where most daemons and services are loaded.
- Graphics system initialization
- Graphical environment start
- Application initialization
Main Technique Types
Techniques presented here can be organized according to the way they try to achieve their effect. The technique can consist of:
- speeding up the activity
- doing the activity in parallel with other initialization tasks
- doingthe activity later (possibly after booting is completed)
- avoiding doing the activity at all.
In summary, each technique describes how to take an existing bootup activity and do one of:
- Do it faster
- Do it in parallel
- Do it later
- Don't do it at all
Some techniques will consist of multiple methods (such as both speeding up and doing it in parallel).
Bootup Time Reduction Technique Outline
Following is an outline of different bootup time reduction techniques, organized by the boot phase where they are applied.
Firmware Phase
Here ase some techniques for speeding up the Firmware phase of the boot sequence:
- Kernel XIP - Kernel Execute-In-Place
- SkipFirmware - Disable firmware features to eliminate diagnostics, memory counts, etc.
- Parallel HDSpin Up - Parallelize Hard Disk spinup with Kernel load
- DMA Copy Of Kernel On Startup - Use DMA to copy kernel from flash to RAM
Kernel Phase
The following are techniques used to speed up the initialization of the kernel:
- DisableConsole - Turn off serial console output during boot
- Preset LPJ - Use pre-set loops_per_jiffy (avoid calibrate_delay())
- Preconfigure PCI - Preconfigure some PCI bus slots
- IDE No Probe - Don't probe some IDE devices -
- No Probe Missing Devices - Disable probes for non-existent devices (including keyboards, etc.)
- Small Kernel Config - Use smallest kernel configuration possible
- Reduce Driver Busy Waits - Shorten device probes by reducing the amount of time the driver busywaits
- A special case of this is Short IDE Delays, with IDE driver delays
- Threaded Init - Perform threaded initialization - replace driver busywaits with yields
- A special case of this is IDE Preempt, with IDE driver busywaits
- Load Drivers Later - Use modules where possible to move driver initialization later in the boot sequence
User Space Phase
The following are techniques for reducing the bootup time for user-space programs:
- Application XIP - Execute-In-Place for applications and librarys
- Reduce RC Scripts - Eliminate unneeded RC scripts
- Custom Init Program - Use a custom initialization program
- (This is a special case of eliminating unneeded RC scripts)
- Optimize RC Scripts - Optimize RC script execution
- Parallel RC Scripts - Execute RC scripts in parallel, instead of in sequence
- Pre Linking - Avoid overhead of runtime link fixups during first program/library load
- Reduce Flash Writes - Reduce writes to flash. (In particular, perhaps you want to "disable the date of last access" with noatime[1][2][3][4][5][6])
- Disable Logging - Turn off logging to stable storage
- Faster File System - Use faster file system
- Ramdisk During Boot - Use RAMDISK during boot
- Segmented File System - Use a segmented file system to avoid interference between reads and writes
General Reduction Techniques
Some reduction techniques don't apply to a specific boot phase, but are general methods to reduce bootup time. These are listed here.
- Smaller Programs - Use smaller kernel and programs for faster load times
- Faster Memory - Use faster system memory to increase load and initialization performance
Table of Reduction Techniques
The following table summarizes the various techniques listed in this document.
Potential Techniques
Here is a list of potential techniques that have not been tried yet, to our knowledge:
- Use different, faster, firmware
- Cache results of find and grep during RC scripts
- Partial XIP (this is a current project of the WG)
- Boot-up Time Reduction Howto
- [howto] General 5.10 - HowTo: Speed up ubuntu boot process - the way you can feel it. - updated
- GPSD Time Service HOWTO
- Boot Time
- Boot Time
- reduction
- Time To Get Up
- Time To Get Up
- Time To Get Up
- Time To Get Up
- HOWTO SET-UP A CRONTAB FILE
- How Computers Boot Up
- liunx boot up process
- How Computers Boot Up
- How Computers Boot Up
- How Computers Boot Up
- Android boot up 过程
- smp boot up sequence
- js验证是否为空
- c#多线程并发执行一个操作函数
- RAC 学习随笔 (1) rac特点与特有后台进程。
- 【rzxt】IE7使用技巧大揭秘
- linux压缩和解压缩命令大全
- Boot-up Time Reduction Howto
- 【rzxt】Windows 8 无法安装qq的问题 解决有妙招
- Mybatis组建动态SQL
- 手机网站如何优化
- maven环境快速搭建
- Android百度地图显示POI
- #define用法详解 及#ifndef #define #endif 总结
- dpkg PF_RING NAPI
- 软件分层设计思路