Boot time: Initial main memory initialization optimizations?
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
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.cin 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