13

I'm looking at the bootup time of Android on my embedded device and I'm trying to get a sense for where I can save some time.

1) What are some things that you've done to really help speed up the bootup time?

So far I looked at the bootup animation time. If I remove the bootup animation all together then I was saving about 6 seconds, which seemed like a lot to me. Then I replaced the bootup animation with just one picture that will be shown for the duration of the bootup animation time and that lost any previous time savings. But the actual bootup animation process was only taking ~1 second to run. (I attached a picture generated with Bootchart. for now just on an emulator)

2) Is it worth looking at the Android bootup animation time? Any clue as to why the bootup animation process affects bootup time so weirdly?

Thank you for your time.

Bootchart bootup time visualization with 1 image as the bootup animation

1 Answer 1

2

Two steps to speed the Linux kernel boot:

  1. Configure the Linux kernel with a minimal set of device drivers, that is, only the drivers need to boot and load the root filesystem. Every driver, filesystem, or subsystems that can be built as a module (that you want in the kernel but not used during boot) should be configured as a module rather than statically linked in.

    To see how much time is used in loading drivers during boot, you should modify the kernel command line with the option "initcall_debug". This will cause timing information to be printed to the console for each initcall. initcalls are used to initialize statically linked kernel drivers and subsystems, and contribute a significant amount of time to the Linux boot process. Reconfiguring any unneeded drivers to loadable modules will subtract that initcall time from the kernel boot time.

  2. Modify the kernel command line with the option "quiet". This will disable most of the output of log messages to the console. Of course this should only be done after you have a stable kernel.

More techniques are here

You must log in to answer this question.