Skip to contentSkip to conversation

Boot time: Initial main memory initialization optimizations?

DISCUSSION Dirk Behme 2 participants 2 messages May 5, 2014 – May 6, 2014

lore
Share & tools
lore

Dirk Behme

author
#0 lore raw

Hi,

regarding boot time optimization, on an embedded ARM Cortex-A9 based system with 512MB or 1GB main memory, we found that initializing this main memory takes a somehow large amount of time.

Initializing 512MB takes <= ~100ms, the additional 512MB on the 1GB take <= ~100ms additionally, too. So in sum <= ~200ms for 1GB.

Having a short look to this, it looks like most of the time is spent in arch/arm/mm/init.c in bootmem_init()/arm_bootmem_init()/arm_bootmem_free().

Has anybody already looked into this if there are any optimizations possible? Maybe even some hacks, if the main memory size (512MB/1GB) is always known? Any pointers?

I'm looking for reducing (a) the overall init time and maybe (b) the dependency on the memory size.

Thanks

Dirk

#1 lore raw
Quoted 9 lines · Dirk Behme

Hi,

regarding boot time optimization, on an embedded ARM Cortex-A9 based system with 512MB or 1GB main memory, we found that initializing this main memory takes a somehow large amount of time.

Initializing 512MB takes <= ~100ms, the additional 512MB on the 1GB take <= ~100ms additionally, too. So in sum <= ~200ms for 1GB.

Quoted 6 lines

Having a short look to this, it looks like most of the time is spent in arch/arm/mm/init.c in bootmem_init()/arm_bootmem_init()/arm_bootmem_free().

Has anybody already looked into this if there are any optimizations possible? Maybe even some hacks, if the main memory size (512MB/1GB) is always known? Any pointers?

There were a couple of longish threads last year. Random links into the middle of 'em:

http://www.spinics.net/lists/linux-mm/msg54027.html
http://lkml.iu.edu//hypermail/linux/kernel/1306.3/01915.html

Quoted 2 lines

I'm looking for reducing (a) the overall init time and maybe (b) the dependency on the memory size.

Basically they were deferring init by abusing the hotplug mechanism, so the system started with less memory and a background thread added more of it.

Rob