Weekly Firefox Startup Performance Roundup

Progress

  • Enabling PGO for SQLite, mozStorage and Places: Found that the trunk unit test boxes have PGO disabled. I’m leery of checking this in without it being properly tested because these components handle so much user data. Next steps: Lukas Blakk is working on the infrastructure to enable unit-testing of PGO builds.
  • JS Component Combining: The combined 60,000 line JS file (!!!) has a problem somewhere in there, causing component registration to fail about 2/3 of the way through. Next steps: Get all the components registering, get numbers on a few platforms to gauge the effect.
  • Startup Timeline: No progress. Vlad said it was land-able, earlier in the week. Next steps: Figure out what needs to happen here to finalize and land. David needs to un-rot the instrumentation patch once the timeline lands (rots quickly).
  • XPT Linking: Landed! However, really only helps cold startup, which we don’t currently measure. Next steps: Once cold startup testing is available, disable and re-enable to get actual numbers on the effect.
  • Static Analysis: No progress, David was out part of the week, and was working on unblocking the dirty profile tests (details below). Next steps: Reduce false positives in the dead-code finder, and run against the full browser context.
  • Dirty Profile Testing: Due to a ton of hard work from Alice, dirty profiling of Ts was enabled on mozilla-central! They are the boxes suffixed “dirty” on the tree, currently testing Ts and Ts-shutdown for profiles with small and medium places.sqlite files on all platforms. Data is available for these tests on the graph server – you can see the effect of Vlad’s landing of bug 506470 on startup for a profile with a medium-sized places.sqlite file on this graph. Next steps: get various other dirty profile scenarios detailed, file bugs and get in the pipe. Figure out tree pollution issues.
  • Cold-startup Testing: Ts throws out the max value of it’s ten runs, so we don’t have a measurement of how long browser takes to initially startup. Drew, with help from Alice, has started working on the Talos changes necessary to get this measurement up and running. We’ve got methods for simulated cold startup from Vlad, Rob Arnold and others. Next steps: Implement support for head/tail scripts for Talos tests, write those scripts for cold startup for all platforms, hand off to rel-eng for deployment.
  • Joel Reymont started working on Firefox performance on Mac, and posted a comparison of dynamic linking time for Firefox and Safari, and started posting notes on his methodology on the wiki.
  • Vlad landed bug 506470, which delays the initialization of Growl on Mac, winning 7.5% on Ts. As seen above, it’s a win on dirty profiles without Growl as well as regular Ts (empty profile).
  • Taras Glek posted a summary of ways to spend less time in disk IO at startup, the performance characteristics of IO on restricted devices, and a log of files opened at startup.

Further Reading

[UPDATE: Added Taras’ post, and a link to Joel’s notes.]


4 Comments on “Weekly Firefox Startup Performance Roundup”

  1. morgamic says:

    Nice post, Dietrich! Keep it coming!

  2. […] would like to talk to you about progress we’ve enjoyed on startup performance, as would […]

  3. climbon says:

    How exactly you measure Firefox startup time performance ? For example if I load Firefox with home page set to be blank what tool or technique we can use to say Firefox itself is loaded. Any ideas ?


Leave a comment