Closed Bug 674579 Opened 13 years ago Closed 6 years ago

Mobile: consider manually separating hot startup libxul from the rest

Categories

(Developer Infrastructure :: Source Code Analysis, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: stechz, Unassigned)

References

Details

(Whiteboard: mobilestartupshrink)

To reduce the number of I/O accesses during startup before XRE_main, we could separate the code needed for startup from the rest of libxul.so. Taras estimates that we use about 20% of our binary code during startup, so this could cut reading and relocating down to a fraction of its current time.

Perhaps we could even speculatively load the other library after startup in a background thread?

PGO has the potential to do this work as well, but on Android we would probably need a custom version of GCC to move forward this way. To me this looks like a lot of work.
Whiteboard: mobilestartupshrink
(In reply to comment #0)
> PGO has the potential to do this work as well, but on Android we would
> probably need a custom version of GCC to move forward this way. To me this
> looks like a lot of work.

It really isn't. It's a few months of work.
(In reply to comment #0)
> Taras estimates that we use about 20% of our binary code during startup.

That's really more like 50%, IMO. And there are things that are hard to separate from each other.

Things I noted on the etherpad that could probably be separated out, with binary sizes:
- media libraries (vpx = 116k, ogg = 6k, nestegg = 12k, tremor = 67k, theora = 38k, sydneyaudio = 4k ; overall might not be worth the bother)
- svg (870k for libgkcontentsvg_s)
- webgl (buried in gfx, not sure it's big, but angle is 214k)
- uconv (714k, but we don't need all the converters until much later)
- necko (1M, that seems like a whole lot)
- (...)
we need necko for startup.
(In reply to comment #3)
> we need necko for startup.

we certainly don't need most of it.
Is this bug covered by bug 632954 (PGO for android)?
(In reply to Alon Zakai (:azakai) from comment #5)
> Is this bug covered by bug 632954 (PGO for android)?

It is not. In theory bug 686805 will make make this bug redundant
Ok, thanks for the info.
Depends on: 686805
Product: Core → Firefox Build System
Status: NEW → RESOLVED
Closed: 6 years ago
Flags: needinfo?(nika)
Resolution: --- → INVALID
Flags: needinfo?(nika)
Product: Firefox Build System → Developer Infrastructure
You need to log in before you can comment on or make changes to this bug.