Please note that User Registration has been temporarily disabled due to a recent increase in automated registrations. If anyone needs an account, please request one here: RequestAccount. Thanks for your patience!--Wmat (talk)
Please email User:Wmat if you experience any issues with the Request Account form.

Difference between revisions of "Improving Android Boot Time"

From eLinux.org
Jump to: navigation, search
(save outline)
 
(Outline: move content to a separate page)
Line 6: Line 6:
  
 
== Outline ==
 
== Outline ==
* Title
+
See [[Improving Android Boot Time Outline]]
* Outline
+
** Android boot overview
+
** Measuring boot times
+
** Problem areas
+
*** Some gory details
+
** Ideas for improvements
+
* Android boot overview
+
** bootloader
+
** kernel
+
** init
+
** zygote
+
*** building preload heap
+
*** start package manager
+
** service manager
+
*** start services
+
* measuring bootup time
+
** systems measured: adp1, n1, evm
+
*** adp1 with donut
+
*** n1 with eclair
+
*** evm with eclair
+
**** NOTE: used nfs root filesystem (file IO timings might be bogus)
+
* Tools for measuring and tracing boot time
+
** stopwatch
+
** grabserial
+
** printk times
+
** bootchart
+
** strace
+
** logcat
+
** method tracer*
+
** ftrace*
+
* stopwatch
+
* grabserial
+
* printk times
+
* bootchart
+
* strace
+
* logcat
+
** extra instrumentation for preloading classes
+
** PARSE_CHATTY flag for package scanning
+
** mention my own tool 'logdelta'
+
* method tracer*
+
** method traces is built in to
+
** ftrace?? (no)
+
* Problem Areas
+
** First, a bootchart for EVM board
+
** bootloader init
+
** kernel init
+
** zygote class preloading
+
** package scanning
+
** service initialization
+
* bootloader init
+
** outside scope of this talk
+
** didn't measure commercial bootloader, only development one (U-boot)
+
* kernel init
+
** is mostly the usual suspects
+
** (initcall_debug results)
+
** USB
+
* zygote class preloading
+
** zygote pre-loads just under 2000 classes, and instantiates them in its heap
+
** controlled by file:
+
* package manager package scan
+
** exact purpose is not known
+
*** validation of certificates, permissions, capabilities and dependencies, etc.?
+
** EVERY package is scanned at boot time
+
* ideas for enhancements
+
** kernel speedups
+
** optimize package scan
+
** optimize class preloading
+
** miscellaneous optimizations
+
** sreadahead??
+
* kernel speedups
+
** outside the scope of this presentation
+
** see http://elinux.org/Boot_Time
+
* optimize package scan
+
*** most definitely
+
*** need to continue analysis
+
**** most likely, should switch to a compressed flash file system
+
** use pre-constructed dalvik heap? (difficult?)
+
*** thread the heap construction?
+
* sreadahead??
+
** could use sreadahead to pre-fill page cache
+
** however, this just masks bad behavior
+
*** Contacts.apk (half of 1.6M) is read 4 times! during boot
+
*** filling page cache makes reads after first one fast, but it would be better to avoid all these reads altogether
+
**** better to just optimize or eliminate parseZipArchive()
+
** sreadahead should be used dead last (after all other enhancements)
+
 
+
      - don't know how to preconstruct heap
+
      - need to analyze heap
+
        - FIXTHIS - is heap identical on every boot?
+
          - how to dump heap memory
+
          - how to dump any memory in Android??
+
        - are parts identical??
+
    - zoneinfo inefficiencies
+
        - measure without strace, and see if time is a problem
+
  - remaining questions
+
    - future directions
+

Revision as of 17:25, 28 July 2010

This page has notes and materials in support of Tim Bird's presentation "Improving Android Bootup Time", which he is gave at LinuxCon North America, 2010.

Abstract

Android is a relatively new distribution of Linux, with a completely different user space implementation, compared to desktop or enterprise Linux. It also has some rather horrible boot times. But it's popular - so Tim decided to take a look and see if the bootup time of a standard Android system could be improved. This presentation describes how well he succeeded in this venture. Tim will present methods of measuring kernel and user-space bootup time on an Android system, as well as present some ideas for places where Android bootup time could be improved.

Outline

See Improving Android Boot Time Outline