Boot-up Time Reduction Howto

   

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

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:

  1. speeding up the activity
  2. doing the activity in parallel with other initialization tasks
  3. doingthe activity later (possibly after booting is completed)
  4. 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 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
  • 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.

Acronyms and Terms
TechniqueBoot PhaseDescriptionObserved reductionNotes
Kernel XIPFirmwareKernel Execute-In-Place - avoids kernel copy and decompression time         250 mscauses runtime performance loss
Skip FirmwareFirmwareSkip firmware probing features,  like memory check, bus probing, and device detection, etc.??Linux re-probes busses and devices anyway, so this is usually waste of time
Parallel HDSpin UpFirwmareStart hard drive spin up before loading kernel                              ??   Not possible if the kernel is loaded from  hard drive.
DMA Copy Of Kernel On StartupFirmwareUse DMA to copy kernel from flash to RAM                                     180 ms.
Preset LPJKernelUse a hardcoded loops_per_jiffy value to avoid cost of calibration.         250 ms.
No Probe Missing DevicesKernelAvoid probing for non-existent keyboards and other devices                  ??   .
Small Kernel ConfigKernelReduce kernel size and length of code paths, thereby reducing execution overhead??.
Disable ConsoleKernelTurn off output to serial console during boot                               250 ms.
Preconfigure PCIKernelPreconfigure PCI bus slots on kernel command line                           ??Is this even possible?
Load Drivers LaterDriversMove drivers to modules and load them later in boot sequence.)              ??Only works for drivers that can be loaded as modules late in the boot cycle.
IDE No ProbeDriversUse "noprobe" on kernel command line for IDE driver                          3 sec.Depends on hardware present
Reduce Driver Busy WaitsDriversReduce the length of driver busy waits                                      ??.
Short IDE DelaysDriversReduce length of IDE initialization delays                                  5 sec.May be dangerous, depends on hardware
Threaded InitDriversReplace busywaits in drivers with yields                                    ??Only adds value if driver can be parallelized with some other init activity.
IDE PreemptDriversReplace busywaits in IDE drivers with yields                                250 ms (decreased non-preemptibility)Already fixed in 2.6
Reduce RC ScriptsRC scriptsEliminate unneeded init scripts                                             3 sec.Depends on required scripts
Parallel RC ScriptsRC scriptsStart init scripts in parallel                                              ??.
Defer RC ScriptsRC scriptsDefer some init scripts to later in boot cycle                              ??.
Optimize RC ScriptsRC scriptsUse busybox, smaller shell, builtins, adjusted scripts                      3 sec.Depends on required scripts
Custom Init ProgramRC scriptsUse custom initialization program (eliminating RC scripts altogether)      10 sec.requires long-term maintenance of the program
Application XIPUser SpaceUse Execute-In-Place for applications and libraries.                        ??Requires uncompressed file system. Application performance may be reduced.
Segmented File SystemUser SpaceKeep read-only data separate from writable data in flash storage            ??.
Reduce Flash WritesUser SpaceAvoid writes to flash memory                                                ??.
Ramdisk During BootUser SpaceKeep writable files in RAM, and write them to flash after boot              ??.
Smaller ProgramsUser SpaceUse smallest programs and configurations possible                           ??Reduces program load time. It may increase cache hits.
Faster MemoryGeneralUse faster memory                                                           ??.

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)
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值