SlideShare une entreprise Scribd logo
1  sur  37
Delivering Software Innovation
MPC Data Limited is a company registered in England and Wales with company number 05507446.
Copyright © MPC Data Limited 2010. All trademarks are hereby acknowledged
The Right Approach to Minimal
Boot Times
Andrew Murray
Senior Software Engineer
CELF Embedded Linux Conference Europe 2010
Delivering Software Innovation
22
 Senior Software Engineer,
MPC Data
 Driver and kernel development
 Embedded applications development
 Windows driver development
 Work Experience
 4 years of experience working with embedded Linux devices
 Good track record in dramatically reducing customers’ boot time
through MPC Data’s boot time reduction service:
– Tight timescales often doesn’t permit nice, elegant and generic
solutions – however this frustration had provided me with many
ideas I wish to share today
– I also wish to share my observations and experiences in boot
time reduction
Andrew Murray
Delivering Software Innovation
33
Agenda
 Principals behind boot time reduction
 My approach to boot time reduction
 Case Study: MS7724 ‘Ecovec’
 Optimizing user space and function reordering
 Video Demonstration
 Conclusion and Q&A
Delivering Software Innovation
4
Principals
 The problem:
 Getting an embedded Linux based product from power-on to a
useful state of functionality in an acceptable amount of time.
 Many innovative solutions exist: Suspend / Hibernate / etc
 This presentation focuses on cold-boot optimisation
 Specialising software for specific needs of a product
 And this works because prior to optimisation the software will be:
– More General purpose
– Likely to contain functionality your device doesn’t require
which will result in more initialisation and a larger image
– More Convenient and flexible
– Likely to probe and detect hardware which you know will
always be there which will contribute to boot delay.
 There is no silver bullet here – all that is required is:
Disciplined Analysis + Common Sense + Pragmatic Approach
4
Delivering Software Innovation
5
The Approach
5
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
Delivering Software Innovation
6
The Approach
6
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
 Understand what functionality is required:
 Immediately after boot
 Sometime after
 The better your understanding the more able you are to
specialise Linux and thus improve boot time
Delivering Software Innovation
7
The Approach
7
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
 It is important to visualise what contributes to boot time
 Measuring boot time across the entire software stack is
essential
 Without tools, gauging small boot delays can be impossible
 Being able to accurately measure boot time across the board
will allow you to measure the effect of any changes you
make…
 …otherwise you’ll be lost in the dark
Delivering Software Innovation
8
The Approach
8
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
 Unnecessary functionality will increase boot time due to
 Increased image size (flash transfer time)
 Time spent initialization during start up
 “But I might use this feature in the future, it’s nice to have”
– Be strict and stick to the brief
Delivering Software Innovation
9
The Approach
9
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
 Functionality you require can be optimised
 It may already be optimised in a later version of sources
 This may involve:
 Optimising flash timings
 Removing unnecessary probing / delays
 Refactoring code
 Taking a new approach to problems
Delivering Software Innovation
10
The Approach
10
Identify boot
time
functionality
Measure
boot time
across the
board
Remove un-
necessary
functionality
Optimise
required
functionality
Re-order
initialisation
 Further improvements can be gained by doing things at
different times:
 Parallelisation
 Using Arjan’s async framework (kernel/async.c)
 Deferred loading of less important features
 Loadable kernel modules
Delivering Software Innovation
11
Case Study
 Use the MS7724 ‘EcoVec’ as a case study for a home
automation system
 Boot time functionality:
 Responsive QT user interface
 Additional functionality:
 Video capture/render (representing a security camera)
 Will describe tools, techniques and lessons along the way
11
Delivering Software Innovation
12
MS7724
12
Delivering Software Innovation
13
SH7724
13
Delivering Software Innovation
14
Case Study
 Use the MS7724 ‘EcoVec’ as a case study for a home
automation system
 Boot time functionality:
 Responsive QT user interface
 Additional functionality:
 Video capture/render (representing a security camera)
 Will describe tools, techniques and lessons along the way
14
Delivering Software Innovation
15
Case Study
15
Delivering Software Innovation
16
Case Study
 Use the MS7724 ‘EcoVec’ as a case study for a home
automation system
 Boot time functionality:
 Responsive QT user interface
 Additional functionality:
 Video capture/render (representing a security camera)
 Will describe tools and techniques along the way
16
Delivering Software Innovation
17
Case Study
 Typical Starting Point:
 BootLoader: UBoot (2009-01)
 OS: Linux (2.6.31-rc7)
 Filesystem: Buildroot (2010.05), JFFS2, NOR Flash
 Application: QT Embedded Opensource 4.6.2
17
Delivering Software Innovation
18
MS7724 Boot Process
 Component times mostly measured using GPIO and a logic
analyser,
 UBoot time measured between reset and GPIO line being
asserted
 Sources modified to toggle GPIO at key points:
– UBoot: UBoot to kernel handover
(common/cmd_bootm.c:do_bootm)
– Kernel: Mount FS
(init/do_mounts.c:do_mount_root)
– Kernel: Init
(init/main.c:init_post)
 Used printk timings for the rest
 Time to required boot time functionality: > 19 seconds!
18
Baseline
(seconds)
UBoot
(2.58 s)
Kernel
(1.30 s)
Filesystem
Mount
(~6.83 s)
Init Scripts
(1.30 s)
GUI
Application
(7.43 s)
Power-to-UI: 19.44 seconds
Delivering Software Innovation
19
UBoot
Functionality Removal
• User Boot Delay – 1000 ms
• Image Verification – 374 ms
• Image Decompression
• USB, ROMImage, Filesystems – 195 ms
Functionality Optimisation
• Improve ‘memcpy’ code – 342 ms
• Eliminate use of console – 103 ms
• Reduced kernel size – 60ms
Functionality Re-ordering
• Read MAC from EEPROM – 124 ms
• Ethernet setup – 98 ms
Reduction: 2577 ms > 280 ms (89%)Init
0.580
User Boot
Delay
1.000
Verify
Image
0.374
Extract
Image
0.622
0
0.5
1
1.5
2
2.5
3
Time(s)
Boot Task
Delivering Software Innovation
20
UBoot (Before and After)
Init
0.580
User Boot
Delay
1.000
Verify
Image
0.374
Extract
Image
0.622
0
0.5
1
1.5
2
2.5
3
Time(s)
Boot Task
Before (136 kB) After (94 kB)
Initialisation
Decompress
0
0.5
1
1.5
2
2.5
3
Time(s)
Boot Task
Delivering Software Innovation
21
Compressed Kernel Images
 The purpose of the boot loader is to jump to an
uncompressed kernel image in RAM
 A number of factors should be considered
 If Flash throughput is greater than decompression
throughput then an uncompressed image is quicker
21
Flash
Throughput
(10.50 MB/s)
Decompression
Throughput
(2.67 MB/s)
Delivering Software Innovation
22
Linux Kernel
Functionality Removal
• Remove USB – 88 kB – 144 ms
• Remove keyboard driver – 4 ms
• Remove Filesystems – 300 kB – 0.8 ms
• Remove console output
Functionality Optimisation
• Remove delays in driver initialization – 400 ms
• Removing delays - 252 ms
• Prevent probing disconnected cameras – 200 ms
• Limiting memset size – 90 ms
• Improve performance of memset – 71 ms
Functionality Re-ordering
• Defer networking initialization – 166 kB – 20 ms
Reduction: 1301 ms -> 113 ms (91%)
Delivering Software Innovation
23
Linux Kernel (Before and After)
Delivering Software Innovation
24
Userspace (Mount and Init scripts)
Functionality Removal
•Remove all init scripts – use a single init
process – 1.32 s
Functionality Optimisation
•Statically link application with uClibc libraries
•Use SquashFS instead of JFFS2 ~6.81 s
•Improve performance of NOR memory driver
Functionality Re-ordering
•Start QT then later start video
Reduction: 8130 ms > 64 ms (99%)
Example of a bootchart graphic
Delivering Software Innovation
25
QT
 Reducing the boot time of the QT application was the biggest
challenge and very time consuming
 Un-optimized QT application was large and took 7.4 seconds
to reach it’s main function!
 Improvements reduce time to 0.3 seconds:
Measurements show incremental effects against original binary (from left to right)
Optimise flash
access
(arch/sh/kernel/io.c)
-2.89s
Removed features
-2.16s?
Used statically
linked uClibc
-0.9s?
Stripped
-0.16s
Optimising
executable
-0.35s
Read-ahead and
block size
- 0.63s
Delivering Software Innovation
26
Why does QT take so long to start?
 Only a portion of the QT application is required to display a
UI to the user
 Event handling, additional forms, etc come later
 As Linux uses Demand Paging - when an executable is run
only parts of the executable used are read from flash
 This reduces unnecessary flash accesses and decreases
application start up time
 However the application is on a block filesystem so when an
entire block is retrieved at a time…
 …This results in unnecessary flash access time if the required
executable code is spread over the entire image
Delivering Software Innovation
27
Function Reordering and Block Sizes
 Sections highlighted in red represent parts of executable
required at start up
 Most of these parts could fit in a single file-system block
 I.e. we could optimise the application such that only 2 blocks of
flash are accessed rather than 4
 Thus the executable can be optimised by:
 Reducing block size
 Eliminating FS readahead
 Reordering executable
MTD
Layer
Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7
NOR
Flash
NOR Flash
Delivering Software Innovation
28
Function Reordering
 GCC compiler features can be used to assist:
 --finstrument-functions
 --ffunction-sections
 Before the entry and after the exit of every function call –
GCC will call two new functions when –finstrument-functions
is used:
 void __cyg_profile_func_enter (….)
 void __cyg_profile_func_exit (….)
 These calls can be implemented to find out which functions
are called when
 This information can be used to generate a custom linker
script – when –function-sections is used each function lives
in its own section.
 This way we can ensure all the required sections for startup
are contained contiguously in flash
 (--gc-sections can also be helpful)
Delivering Software Innovation
29
Function Reordering and Block Sizes
 Before:
 After:
MTD
Layer
Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7
NOR
Flash
NOR Flash
MTD
Layer
Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7
NOR
Flash
NOR Flash
FS QT Application
Delivering Software Innovation
30
Essential tools
 Discrete events can be measured by toggling GPIO outputs
and utilising a logic analyser,
 Kernel events can be measured with:
 Printk timings,
 Initcall_debug and bootchart scripts,
 Userspace events can be measured with ubootchart
 http://code.google.com/p/ubootchart/
 http://www.bootchart.org/
 These are just some of the many tools available
Delivering Software Innovation
31
Case Study: Before and After
A reduction of 96%!
Baseline
(seconds)
UBoot
(2.58 s)
Kernel
(1.30 s)
Filesystem
Mount
(~6.83 s)
Init Scripts
(1.30 s)
GUI
Application
(7.43 s)
Power-to-UI: 19.44 seconds
After swiftBoot
Modifications
(seconds)
UBoot
(0.28 s)
Kernel
(0.11 s)
Filesystem
Mount
(0.02 s)
Init Scripts
(0.06 s)
GUI
Application
(0.30 s)
Power-to-UI: 0.77 seconds
Delivering Software Innovation
32
Modification
In UBoot
Gain
(ms)
Modification
In Kernel
Gain
(ms)
Modification
In Userspace
Gain
(ms)
Remove boot delay 1000 Remove driver
delays
652 Use squashfs 6830
Remove Image
verification
374 Prevent probing
disconnected
cameras
200 Optimise flash
accesses 2890
Optimise memcpy
code
342 Remove USB 144 Remove unused
features from QT
2160
Remove USB
ROMImage,
filesystems
195 Don’t allocate
memory for unused
camera components
90
Remove all init scripts 1300
Defer reading MAC
address
124 Improve memset 71 Statically link QT with
uclibc
900
Reduction due to
kernel size
60 Defer network
initialisation
20 Reduce readahead
and block size
630
Remove delays in
Ethernet init
98 Remove keyboard
driver
4 Re-order QT
application
350
Eliminate use of
console
103 Remove filesystems 0.8 Strip QT application 160
Total Gain 2.2 s Total Gain 1.2 s Total Gain 15.2 s
Summary
Delivering Software Innovation
33
Guiding Principles
 Observe and Record
 Measuring boot times is the only way to form a clear picture of
what is contributing to boot time,
 Keep copious notes
 Tackle the biggest delays in the system first,
 Identify the largest delays and remove them to be most
effective
 Be aware and try to understand varying boot times
 Remember the uncertainty principle
 Don’t forget testing
Delivering Software Innovation
34
Conclusion & Call to action
Reducing cold boot time is a like removing the
longest links of a chain until you have just
short links
 As a result boot time is a product of a system
design and long links can be easily added
 Effort will always be required to remove and
shorten links for a given system
 Holy grail is to reduce this amount of effort to
nothing – some ideas towards this:
 [Idealism] Asynchronous initialisation in the kernel by default
– Many challenges here
– This would reduce effect of delays in drivers
 [Realism] Simple Caching framework for device probes
– To eliminate probes for known hardware (generic device tree)
– Could encompass LPJ, etc
35
Thank You
Any Questions?
36
Appendix
Delivering Software Innovation
37
Initcall Debug
 Add the following to your kernel command line:
 initcall_debug (to add debug)
 loglevel=0 (to reduce the impact this has on boot time)
 Ensure the following are set in your kernel configuration:
 CONFIG_PRINTK_TIME (add timings to printks)
 CONFIG_KALLSYMS (ensure symbols are there)
 CONFIG_LOGBUF_SHIFT = 18 (ensure there is room in the log
buffer)
 Copy the output of ‘dmesg’
 Type ‘cat output | ./scripts/bootgraph.pl > graph.svg’

Contenu connexe

Tendances

Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniquesSatpal Parmar
 
WALT vs PELT : Redux - SFO17-307
WALT vs PELT : Redux  - SFO17-307WALT vs PELT : Redux  - SFO17-307
WALT vs PELT : Redux - SFO17-307Linaro
 
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edge
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edgeTSN apps running on VxWorks RTOS as a KVM guest at the intelligent edge
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edgeAndrei Kholodnyi
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)Linaro
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel CrashdumpMarian Marinov
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins DockerAlex Soto
 
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOS
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOSBuilding a QT based solution on a i.MX7 processor running Linux and FreeRTOS
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOSFernando Luiz Cola
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchSherif Mousa
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debuggingHao-Ran Liu
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Aananth C N
 
XPDDS17: Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...
XPDDS17:  Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...XPDDS17:  Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...
XPDDS17: Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...The Linux Foundation
 
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Hiraku Toyooka
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Thomas Petazzoni
 

Tendances (20)

Qemu
QemuQemu
Qemu
 
Debugging linux kernel tools and techniques
Debugging linux kernel tools and  techniquesDebugging linux kernel tools and  techniques
Debugging linux kernel tools and techniques
 
Open shift 4-update
Open shift 4-updateOpen shift 4-update
Open shift 4-update
 
WALT vs PELT : Redux - SFO17-307
WALT vs PELT : Redux  - SFO17-307WALT vs PELT : Redux  - SFO17-307
WALT vs PELT : Redux - SFO17-307
 
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edge
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edgeTSN apps running on VxWorks RTOS as a KVM guest at the intelligent edge
TSN apps running on VxWorks RTOS as a KVM guest at the intelligent edge
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
 
Linux Kernel Crashdump
Linux Kernel CrashdumpLinux Kernel Crashdump
Linux Kernel Crashdump
 
kdump: usage and_internals
kdump: usage and_internalskdump: usage and_internals
kdump: usage and_internals
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
 
Embedded linux network device driver development
Embedded linux network device driver developmentEmbedded linux network device driver development
Embedded linux network device driver development
 
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOS
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOSBuilding a QT based solution on a i.MX7 processor running Linux and FreeRTOS
Building a QT based solution on a i.MX7 processor running Linux and FreeRTOS
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Qemu Pcie
Qemu PcieQemu Pcie
Qemu Pcie
 
Introduction of kubernetes rancher
Introduction of kubernetes rancherIntroduction of kubernetes rancher
Introduction of kubernetes rancher
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Virtualization Support in ARMv8+
Virtualization Support in ARMv8+Virtualization Support in ARMv8+
Virtualization Support in ARMv8+
 
XPDDS17: Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...
XPDDS17:  Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...XPDDS17:  Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...
XPDDS17: Reworking the ARM GIC Emulation & Xen Challenges in the ARM ITS Emu...
 
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)Linuxのプロセススケジューラ(Reading the Linux process scheduler)
Linuxのプロセススケジューラ(Reading the Linux process scheduler)
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
 

En vedette

Renesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal BootRenesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal Bootandrewmurraympc
 
Quickboot on i.MX6
Quickboot on i.MX6Quickboot on i.MX6
Quickboot on i.MX6Gary Bisson
 
TI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootTI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootandrewmurraympc
 
Mainline U-BOOT for iMX6 (AR6MX)
Mainline U-BOOT for iMX6 (AR6MX)Mainline U-BOOT for iMX6 (AR6MX)
Mainline U-BOOT for iMX6 (AR6MX)Frodo Lai
 
Linux Porting
Linux PortingLinux Porting
Linux PortingChamp Yen
 
Tachyon-2014-11-21-amp-camp5
Tachyon-2014-11-21-amp-camp5Tachyon-2014-11-21-amp-camp5
Tachyon-2014-11-21-amp-camp5Haoyuan Li
 
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...Spark Summit
 
Linux Filesystems, RAID, and more
Linux Filesystems, RAID, and moreLinux Filesystems, RAID, and more
Linux Filesystems, RAID, and moreMark Wong
 
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...Spark Summit
 
The Hot Rod Protocol in Infinispan
The Hot Rod Protocol in InfinispanThe Hot Rod Protocol in Infinispan
The Hot Rod Protocol in InfinispanGalder Zamarreño
 
Advanced Data Retrieval and Analytics with Apache Spark and Openstack Swift
Advanced Data Retrieval and Analytics with Apache Spark and Openstack SwiftAdvanced Data Retrieval and Analytics with Apache Spark and Openstack Swift
Advanced Data Retrieval and Analytics with Apache Spark and Openstack SwiftDaniel Krook
 
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDS
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDSAccelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDS
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDSCeph Community
 
Scaling up genomic analysis with ADAM
Scaling up genomic analysis with ADAMScaling up genomic analysis with ADAM
Scaling up genomic analysis with ADAMfnothaft
 
Velox: Models in Action
Velox: Models in ActionVelox: Models in Action
Velox: Models in ActionDan Crankshaw
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. ExperienceMike Fogus
 
SparkR: Enabling Interactive Data Science at Scale
SparkR: Enabling Interactive Data Science at ScaleSparkR: Enabling Interactive Data Science at Scale
SparkR: Enabling Interactive Data Science at Scalejeykottalam
 
SampleClean: Bringing Data Cleaning into the BDAS Stack
SampleClean: Bringing Data Cleaning into the BDAS StackSampleClean: Bringing Data Cleaning into the BDAS Stack
SampleClean: Bringing Data Cleaning into the BDAS Stackjeykottalam
 
A Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyA Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyDavid Beazley (Dabeaz LLC)
 

En vedette (20)

Renesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal BootRenesas DevCon 2010: Starting a QT Application with Minimal Boot
Renesas DevCon 2010: Starting a QT Application with Minimal Boot
 
Quickboot on i.MX6
Quickboot on i.MX6Quickboot on i.MX6
Quickboot on i.MX6
 
TI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBootTI TechDays 2010: swiftBoot
TI TechDays 2010: swiftBoot
 
Mainline U-BOOT for iMX6 (AR6MX)
Mainline U-BOOT for iMX6 (AR6MX)Mainline U-BOOT for iMX6 (AR6MX)
Mainline U-BOOT for iMX6 (AR6MX)
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
 
Tachyon-2014-11-21-amp-camp5
Tachyon-2014-11-21-amp-camp5Tachyon-2014-11-21-amp-camp5
Tachyon-2014-11-21-amp-camp5
 
Open Stack Cheat Sheet V1
Open Stack Cheat Sheet V1Open Stack Cheat Sheet V1
Open Stack Cheat Sheet V1
 
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...
The Little Warehouse That Couldn't Or: How We Learned to Stop Worrying and Mo...
 
Linux Filesystems, RAID, and more
Linux Filesystems, RAID, and moreLinux Filesystems, RAID, and more
Linux Filesystems, RAID, and more
 
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...
Lessons Learned with Spark at the US Patent & Trademark Office-(Christopher B...
 
The Hot Rod Protocol in Infinispan
The Hot Rod Protocol in InfinispanThe Hot Rod Protocol in Infinispan
The Hot Rod Protocol in Infinispan
 
Advanced Data Retrieval and Analytics with Apache Spark and Openstack Swift
Advanced Data Retrieval and Analytics with Apache Spark and Openstack SwiftAdvanced Data Retrieval and Analytics with Apache Spark and Openstack Swift
Advanced Data Retrieval and Analytics with Apache Spark and Openstack Swift
 
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDS
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDSAccelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDS
Accelerating Cassandra Workloads on Ceph with All-Flash PCIE SSDS
 
Scaling up genomic analysis with ADAM
Scaling up genomic analysis with ADAMScaling up genomic analysis with ADAM
Scaling up genomic analysis with ADAM
 
Velox: Models in Action
Velox: Models in ActionVelox: Models in Action
Velox: Models in Action
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. Experience
 
SparkR: Enabling Interactive Data Science at Scale
SparkR: Enabling Interactive Data Science at ScaleSparkR: Enabling Interactive Data Science at Scale
SparkR: Enabling Interactive Data Science at Scale
 
SampleClean: Bringing Data Cleaning into the BDAS Stack
SampleClean: Bringing Data Cleaning into the BDAS StackSampleClean: Bringing Data Cleaning into the BDAS Stack
SampleClean: Bringing Data Cleaning into the BDAS Stack
 
A Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and ConcurrencyA Curious Course on Coroutines and Concurrency
A Curious Course on Coroutines and Concurrency
 
OpenStack Cheat Sheet V2
OpenStack Cheat Sheet V2OpenStack Cheat Sheet V2
OpenStack Cheat Sheet V2
 

Similaire à ELC-E 2010: The Right Approach to Minimal Boot Times

TechTalk_Cloud Performance Testing_0.6
TechTalk_Cloud Performance Testing_0.6TechTalk_Cloud Performance Testing_0.6
TechTalk_Cloud Performance Testing_0.6Sravanthi N
 
Early Software Development through Palladium Emulation
Early Software Development through Palladium EmulationEarly Software Development through Palladium Emulation
Early Software Development through Palladium EmulationRaghav Nayak
 
Improving User Experience with Ubiquitous QuickBoot
 Improving User Experience with Ubiquitous QuickBoot Improving User Experience with Ubiquitous QuickBoot
Improving User Experience with Ubiquitous QuickBootICS
 
12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reductionandrewmurraympc
 
Infrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash CourseInfrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash CourseDr. Sven Balnojan
 
DockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging WorkshopDockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging WorkshopBrian Christner
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time OptimizationKan-Ru Chen
 
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...Jaeman An
 
Cognos Performance Tuning Tips & Tricks
Cognos Performance Tuning Tips & TricksCognos Performance Tuning Tips & Tricks
Cognos Performance Tuning Tips & TricksSenturus
 
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdf
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdfFujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdf
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdfKommaneni Sreenivasulu
 
HiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSHiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSTulipp. Eu
 
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...Nagios
 
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)byteLAKE
 
NTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSNTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSSharon Reynolds
 
Application Of A Server Hardening Essay
Application Of A Server Hardening EssayApplication Of A Server Hardening Essay
Application Of A Server Hardening EssayWinstina Kennedy
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentationIan Renyard
 
Reproducibility in artificial intelligence
Reproducibility in artificial intelligenceReproducibility in artificial intelligence
Reproducibility in artificial intelligenceCarlos Toxtli
 
Reducing boot time in embedded Linux
Reducing boot time in embedded LinuxReducing boot time in embedded Linux
Reducing boot time in embedded LinuxChris Simmonds
 

Similaire à ELC-E 2010: The Right Approach to Minimal Boot Times (20)

TechTalk_Cloud Performance Testing_0.6
TechTalk_Cloud Performance Testing_0.6TechTalk_Cloud Performance Testing_0.6
TechTalk_Cloud Performance Testing_0.6
 
Early Software Development through Palladium Emulation
Early Software Development through Palladium EmulationEarly Software Development through Palladium Emulation
Early Software Development through Palladium Emulation
 
Improving User Experience with Ubiquitous QuickBoot
 Improving User Experience with Ubiquitous QuickBoot Improving User Experience with Ubiquitous QuickBoot
Improving User Experience with Ubiquitous QuickBoot
 
12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction12 Lessons Learnt in Boot Time Reduction
12 Lessons Learnt in Boot Time Reduction
 
Infrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash CourseInfrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash Course
 
DockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging WorkshopDockerCon Europe 2018 Monitoring & Logging Workshop
DockerCon Europe 2018 Monitoring & Logging Workshop
 
Android Boot Time Optimization
Android Boot Time OptimizationAndroid Boot Time Optimization
Android Boot Time Optimization
 
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...
How To Build Efficient ML Pipelines From The Startup Perspective (GTC Silicon...
 
Cognos Performance Tuning Tips & Tricks
Cognos Performance Tuning Tips & TricksCognos Performance Tuning Tips & Tricks
Cognos Performance Tuning Tips & Tricks
 
Mike_Salt.pdf
Mike_Salt.pdfMike_Salt.pdf
Mike_Salt.pdf
 
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdf
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdfFujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdf
Fujitsu Services _Large Scale EBS 12.2 Upgrade Licking the Wounds_Mike_Salt.pdf
 
HiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOSHiPEAC 2019 Tutorial - Maestro RTOS
HiPEAC 2019 Tutorial - Maestro RTOS
 
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...
Nagios Conference 2011 - Nate Broderick - Nagios XI Large Implementation Tips...
 
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)
byteLAKE's CFD Suite (AI-accelerated CFD) (2024-02)
 
NTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALSNTC/326 ENTIRE CLASS UOP TUTORIALS
NTC/326 ENTIRE CLASS UOP TUTORIALS
 
Application Of A Server Hardening Essay
Application Of A Server Hardening EssayApplication Of A Server Hardening Essay
Application Of A Server Hardening Essay
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Arm html5 presentation
Arm html5 presentationArm html5 presentation
Arm html5 presentation
 
Reproducibility in artificial intelligence
Reproducibility in artificial intelligenceReproducibility in artificial intelligence
Reproducibility in artificial intelligence
 
Reducing boot time in embedded Linux
Reducing boot time in embedded LinuxReducing boot time in embedded Linux
Reducing boot time in embedded Linux
 

Dernier

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 

Dernier (20)

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 

ELC-E 2010: The Right Approach to Minimal Boot Times

  • 1. Delivering Software Innovation MPC Data Limited is a company registered in England and Wales with company number 05507446. Copyright © MPC Data Limited 2010. All trademarks are hereby acknowledged The Right Approach to Minimal Boot Times Andrew Murray Senior Software Engineer CELF Embedded Linux Conference Europe 2010
  • 2. Delivering Software Innovation 22  Senior Software Engineer, MPC Data  Driver and kernel development  Embedded applications development  Windows driver development  Work Experience  4 years of experience working with embedded Linux devices  Good track record in dramatically reducing customers’ boot time through MPC Data’s boot time reduction service: – Tight timescales often doesn’t permit nice, elegant and generic solutions – however this frustration had provided me with many ideas I wish to share today – I also wish to share my observations and experiences in boot time reduction Andrew Murray
  • 3. Delivering Software Innovation 33 Agenda  Principals behind boot time reduction  My approach to boot time reduction  Case Study: MS7724 ‘Ecovec’  Optimizing user space and function reordering  Video Demonstration  Conclusion and Q&A
  • 4. Delivering Software Innovation 4 Principals  The problem:  Getting an embedded Linux based product from power-on to a useful state of functionality in an acceptable amount of time.  Many innovative solutions exist: Suspend / Hibernate / etc  This presentation focuses on cold-boot optimisation  Specialising software for specific needs of a product  And this works because prior to optimisation the software will be: – More General purpose – Likely to contain functionality your device doesn’t require which will result in more initialisation and a larger image – More Convenient and flexible – Likely to probe and detect hardware which you know will always be there which will contribute to boot delay.  There is no silver bullet here – all that is required is: Disciplined Analysis + Common Sense + Pragmatic Approach 4
  • 5. Delivering Software Innovation 5 The Approach 5 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation
  • 6. Delivering Software Innovation 6 The Approach 6 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation  Understand what functionality is required:  Immediately after boot  Sometime after  The better your understanding the more able you are to specialise Linux and thus improve boot time
  • 7. Delivering Software Innovation 7 The Approach 7 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation  It is important to visualise what contributes to boot time  Measuring boot time across the entire software stack is essential  Without tools, gauging small boot delays can be impossible  Being able to accurately measure boot time across the board will allow you to measure the effect of any changes you make…  …otherwise you’ll be lost in the dark
  • 8. Delivering Software Innovation 8 The Approach 8 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation  Unnecessary functionality will increase boot time due to  Increased image size (flash transfer time)  Time spent initialization during start up  “But I might use this feature in the future, it’s nice to have” – Be strict and stick to the brief
  • 9. Delivering Software Innovation 9 The Approach 9 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation  Functionality you require can be optimised  It may already be optimised in a later version of sources  This may involve:  Optimising flash timings  Removing unnecessary probing / delays  Refactoring code  Taking a new approach to problems
  • 10. Delivering Software Innovation 10 The Approach 10 Identify boot time functionality Measure boot time across the board Remove un- necessary functionality Optimise required functionality Re-order initialisation  Further improvements can be gained by doing things at different times:  Parallelisation  Using Arjan’s async framework (kernel/async.c)  Deferred loading of less important features  Loadable kernel modules
  • 11. Delivering Software Innovation 11 Case Study  Use the MS7724 ‘EcoVec’ as a case study for a home automation system  Boot time functionality:  Responsive QT user interface  Additional functionality:  Video capture/render (representing a security camera)  Will describe tools, techniques and lessons along the way 11
  • 14. Delivering Software Innovation 14 Case Study  Use the MS7724 ‘EcoVec’ as a case study for a home automation system  Boot time functionality:  Responsive QT user interface  Additional functionality:  Video capture/render (representing a security camera)  Will describe tools, techniques and lessons along the way 14
  • 16. Delivering Software Innovation 16 Case Study  Use the MS7724 ‘EcoVec’ as a case study for a home automation system  Boot time functionality:  Responsive QT user interface  Additional functionality:  Video capture/render (representing a security camera)  Will describe tools and techniques along the way 16
  • 17. Delivering Software Innovation 17 Case Study  Typical Starting Point:  BootLoader: UBoot (2009-01)  OS: Linux (2.6.31-rc7)  Filesystem: Buildroot (2010.05), JFFS2, NOR Flash  Application: QT Embedded Opensource 4.6.2 17
  • 18. Delivering Software Innovation 18 MS7724 Boot Process  Component times mostly measured using GPIO and a logic analyser,  UBoot time measured between reset and GPIO line being asserted  Sources modified to toggle GPIO at key points: – UBoot: UBoot to kernel handover (common/cmd_bootm.c:do_bootm) – Kernel: Mount FS (init/do_mounts.c:do_mount_root) – Kernel: Init (init/main.c:init_post)  Used printk timings for the rest  Time to required boot time functionality: > 19 seconds! 18 Baseline (seconds) UBoot (2.58 s) Kernel (1.30 s) Filesystem Mount (~6.83 s) Init Scripts (1.30 s) GUI Application (7.43 s) Power-to-UI: 19.44 seconds
  • 19. Delivering Software Innovation 19 UBoot Functionality Removal • User Boot Delay – 1000 ms • Image Verification – 374 ms • Image Decompression • USB, ROMImage, Filesystems – 195 ms Functionality Optimisation • Improve ‘memcpy’ code – 342 ms • Eliminate use of console – 103 ms • Reduced kernel size – 60ms Functionality Re-ordering • Read MAC from EEPROM – 124 ms • Ethernet setup – 98 ms Reduction: 2577 ms > 280 ms (89%)Init 0.580 User Boot Delay 1.000 Verify Image 0.374 Extract Image 0.622 0 0.5 1 1.5 2 2.5 3 Time(s) Boot Task
  • 20. Delivering Software Innovation 20 UBoot (Before and After) Init 0.580 User Boot Delay 1.000 Verify Image 0.374 Extract Image 0.622 0 0.5 1 1.5 2 2.5 3 Time(s) Boot Task Before (136 kB) After (94 kB) Initialisation Decompress 0 0.5 1 1.5 2 2.5 3 Time(s) Boot Task
  • 21. Delivering Software Innovation 21 Compressed Kernel Images  The purpose of the boot loader is to jump to an uncompressed kernel image in RAM  A number of factors should be considered  If Flash throughput is greater than decompression throughput then an uncompressed image is quicker 21 Flash Throughput (10.50 MB/s) Decompression Throughput (2.67 MB/s)
  • 22. Delivering Software Innovation 22 Linux Kernel Functionality Removal • Remove USB – 88 kB – 144 ms • Remove keyboard driver – 4 ms • Remove Filesystems – 300 kB – 0.8 ms • Remove console output Functionality Optimisation • Remove delays in driver initialization – 400 ms • Removing delays - 252 ms • Prevent probing disconnected cameras – 200 ms • Limiting memset size – 90 ms • Improve performance of memset – 71 ms Functionality Re-ordering • Defer networking initialization – 166 kB – 20 ms Reduction: 1301 ms -> 113 ms (91%)
  • 23. Delivering Software Innovation 23 Linux Kernel (Before and After)
  • 24. Delivering Software Innovation 24 Userspace (Mount and Init scripts) Functionality Removal •Remove all init scripts – use a single init process – 1.32 s Functionality Optimisation •Statically link application with uClibc libraries •Use SquashFS instead of JFFS2 ~6.81 s •Improve performance of NOR memory driver Functionality Re-ordering •Start QT then later start video Reduction: 8130 ms > 64 ms (99%) Example of a bootchart graphic
  • 25. Delivering Software Innovation 25 QT  Reducing the boot time of the QT application was the biggest challenge and very time consuming  Un-optimized QT application was large and took 7.4 seconds to reach it’s main function!  Improvements reduce time to 0.3 seconds: Measurements show incremental effects against original binary (from left to right) Optimise flash access (arch/sh/kernel/io.c) -2.89s Removed features -2.16s? Used statically linked uClibc -0.9s? Stripped -0.16s Optimising executable -0.35s Read-ahead and block size - 0.63s
  • 26. Delivering Software Innovation 26 Why does QT take so long to start?  Only a portion of the QT application is required to display a UI to the user  Event handling, additional forms, etc come later  As Linux uses Demand Paging - when an executable is run only parts of the executable used are read from flash  This reduces unnecessary flash accesses and decreases application start up time  However the application is on a block filesystem so when an entire block is retrieved at a time…  …This results in unnecessary flash access time if the required executable code is spread over the entire image
  • 27. Delivering Software Innovation 27 Function Reordering and Block Sizes  Sections highlighted in red represent parts of executable required at start up  Most of these parts could fit in a single file-system block  I.e. we could optimise the application such that only 2 blocks of flash are accessed rather than 4  Thus the executable can be optimised by:  Reducing block size  Eliminating FS readahead  Reordering executable MTD Layer Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 NOR Flash NOR Flash
  • 28. Delivering Software Innovation 28 Function Reordering  GCC compiler features can be used to assist:  --finstrument-functions  --ffunction-sections  Before the entry and after the exit of every function call – GCC will call two new functions when –finstrument-functions is used:  void __cyg_profile_func_enter (….)  void __cyg_profile_func_exit (….)  These calls can be implemented to find out which functions are called when  This information can be used to generate a custom linker script – when –function-sections is used each function lives in its own section.  This way we can ensure all the required sections for startup are contained contiguously in flash  (--gc-sections can also be helpful)
  • 29. Delivering Software Innovation 29 Function Reordering and Block Sizes  Before:  After: MTD Layer Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 NOR Flash NOR Flash MTD Layer Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 NOR Flash NOR Flash FS QT Application
  • 30. Delivering Software Innovation 30 Essential tools  Discrete events can be measured by toggling GPIO outputs and utilising a logic analyser,  Kernel events can be measured with:  Printk timings,  Initcall_debug and bootchart scripts,  Userspace events can be measured with ubootchart  http://code.google.com/p/ubootchart/  http://www.bootchart.org/  These are just some of the many tools available
  • 31. Delivering Software Innovation 31 Case Study: Before and After A reduction of 96%! Baseline (seconds) UBoot (2.58 s) Kernel (1.30 s) Filesystem Mount (~6.83 s) Init Scripts (1.30 s) GUI Application (7.43 s) Power-to-UI: 19.44 seconds After swiftBoot Modifications (seconds) UBoot (0.28 s) Kernel (0.11 s) Filesystem Mount (0.02 s) Init Scripts (0.06 s) GUI Application (0.30 s) Power-to-UI: 0.77 seconds
  • 32. Delivering Software Innovation 32 Modification In UBoot Gain (ms) Modification In Kernel Gain (ms) Modification In Userspace Gain (ms) Remove boot delay 1000 Remove driver delays 652 Use squashfs 6830 Remove Image verification 374 Prevent probing disconnected cameras 200 Optimise flash accesses 2890 Optimise memcpy code 342 Remove USB 144 Remove unused features from QT 2160 Remove USB ROMImage, filesystems 195 Don’t allocate memory for unused camera components 90 Remove all init scripts 1300 Defer reading MAC address 124 Improve memset 71 Statically link QT with uclibc 900 Reduction due to kernel size 60 Defer network initialisation 20 Reduce readahead and block size 630 Remove delays in Ethernet init 98 Remove keyboard driver 4 Re-order QT application 350 Eliminate use of console 103 Remove filesystems 0.8 Strip QT application 160 Total Gain 2.2 s Total Gain 1.2 s Total Gain 15.2 s Summary
  • 33. Delivering Software Innovation 33 Guiding Principles  Observe and Record  Measuring boot times is the only way to form a clear picture of what is contributing to boot time,  Keep copious notes  Tackle the biggest delays in the system first,  Identify the largest delays and remove them to be most effective  Be aware and try to understand varying boot times  Remember the uncertainty principle  Don’t forget testing
  • 34. Delivering Software Innovation 34 Conclusion & Call to action Reducing cold boot time is a like removing the longest links of a chain until you have just short links  As a result boot time is a product of a system design and long links can be easily added  Effort will always be required to remove and shorten links for a given system  Holy grail is to reduce this amount of effort to nothing – some ideas towards this:  [Idealism] Asynchronous initialisation in the kernel by default – Many challenges here – This would reduce effect of delays in drivers  [Realism] Simple Caching framework for device probes – To eliminate probes for known hardware (generic device tree) – Could encompass LPJ, etc
  • 37. Delivering Software Innovation 37 Initcall Debug  Add the following to your kernel command line:  initcall_debug (to add debug)  loglevel=0 (to reduce the impact this has on boot time)  Ensure the following are set in your kernel configuration:  CONFIG_PRINTK_TIME (add timings to printks)  CONFIG_KALLSYMS (ensure symbols are there)  CONFIG_LOGBUF_SHIFT = 18 (ensure there is room in the log buffer)  Copy the output of ‘dmesg’  Type ‘cat output | ./scripts/bootgraph.pl > graph.svg’