[Skiboot] Boot time and async loading of LIDs/Resources
stewart at linux.vnet.ibm.com
Wed Mar 25 13:53:34 AEDT 2015
So, I merged the code that enables us to start doing preload of LIDs
much earlier in skiboot boot.
Looking at current boot times on a 4U IBM machine, specifically around
loading LIDs from FSP, I've come up with the following observations:
(remember, timebase is 512000000, so we can *approximate* the elapsed
[2523077208,5] Trying to load LID 81e08430 from FSP
[2783610473,7] HBRT: LID 0x81e08430 successfully loaded, len=0x31c83c40
2783610473-2523077208 = 260533265 = ~0.5sec
[3194388039,5] Trying to load LID 81e08430 from FSP
[3475771650,7] HBRT: LID 0x81e08430 successfully loaded, len=0x31c83d10
3475771650-3194388039 = 281383611 = ~0.5sec
[3480688081,5] VPD: Trying to load VPD LID 0x80e08043...
[3480695509,5] Trying to load LID 80e08043 from FSP
[3677486208,7] FSP: LID 80e08043 Chunk read -> rc=0x00 off: 00000000 twritten: 00000b6d
[3680071272,5] VPD: Loaded 2925 bytes
3680071272-3480688081 = 199383191 = ~0.39sec
[3742448965,5] Trying to load OPAL LID 80a02001...
[3808086803,6] CHIP0: CAPP ucode lid loaded at 0x30977a48
3808086803-3742448965 = 65637838 = ~0.13sec
[4829986625,5] Trying to load OPAL LID 80f00101...
[4830000409,7] FSP: Loading Chunk 0x00800000 bytes balign=20000000 boff=0 bsize=800000
[5748728194,7] FSP: LID 80f08101 Chunk read -> rc=0x00 off: 00000000 twritten: 00788ee0
[5751311728,5] INIT: Kernel loaded, size: 7900896 bytes (0 = unknown preload)
[5751320668,5] INIT: 32-bit kernel entry at 0x20010140
5751320668-4829986625 = 921334043 = ~1.8sec
[5751328196,5] Trying to load OPAL LID 80f00102...
[5751341718,7] FSP: Loading Chunk 0x00800000 bytes balign=28000000 boff=0 bsize=800000
[6398973817,7] FSP: LID 80f08102 Chunk read -> rc=0x00 off: 00000000 twritten: 00558680
[6401557206,5] INIT: Initramfs loaded, size: 5604992 bytes
6401557206-5751328196 = 650229010 = ~1.3sec
For a total of approximately 4.64 seconds.
We currently pretty much synchronously wait for all of these as I have
not (yet) moved the start_prefetch() calls to earlier in boot than the
Total skiboot boot time is:
before timebase resync: 34274401041 - 34230335336 = 0.8 sec
after timebase sync: 15035694119 - 2016880 = ~29sec.
i.e. 30 seconds in total
It takes 0.3 seconds to do this:
[10637884,6] FSP #0: Found in device-tree, setting up...
[173144798,6] INIT: Sending HV Functional: Standby...
And an additional 4.5 seconds to get to:
[2512875741,6] FSP: Got FSP Functional
Plus seemingly a total of:
4829394363 - 3682208519 = 2.24 sec on PHB things.
Could someone look at similar numbers on some of the BMC machines? I
think we can cut the 4.64 seconds off FSP boot without too much trouble,
and due to PNOR being a bunch slower (as Joel as proven with his
original load-resources-early patch), we should be able to shave that
bit off boot time too.
More information about the Skiboot