Performance/Report-2013-12

From MozillaWiki
Jump to: navigation, search

Firefox Performance Report - December 2013

Filter: All Products | Firefox Desktop | Firefox for Android | Firefox OS

The goal of this report is to clearly summarize the active Mozilla engineering performance work so that we can make deliberate decisions with respect to the projects that we choose to invest in and the allocation of our people.

As of this month, this report includes work specific to Firefox for Android and Firefox OS.

Summary

  • All Australis performance issues have been addressed. Australis is clear to proceed from a performance perspective.
  • An issue related to Facebook's use of history has been resolved by Facebook. The Desktop performance team is working on a set of countermeasures to prevent future recurrence of this issue.
  • The Android team introduced Skia GL for NVIDIA in Firefox 25. In Firefox 26 they have enabled it for all GPUs.
  • Investigation into Desktop power consumption has begun starting with analyzing the browser when idle.
  • The network cache rewrite has been retargeted to Firefox 31.
  • A lot of effort continues to be targeted at removing work from the main thread. This work is distributed across the graphics, front-end, and performance teams.

The current high level engineering performance focus areas are:

  1. (start-up) A reduction of Firefox desktop start-up time. Start-up time was identified as a key retention driver in the Chrome attrition study.
  2. (responsive) Improved responsiveness through the removal of main thread IO. Main thread IO is a key cause of visible 'jank' (periods of unresponsiveness) in Firefox products.
  3. (throughput) Improved content load time. Perceived time-to-load is a visual differentiator between browsers.
  4. (tooling) Improved test automation and profiling tools for desktop and mobile.

Project definitions including team, product impact, and work tracking are listed at https://wiki.mozilla.org/Performance. High level project activity and current projected targets are listed below.

Meeting notes from the monthly performance meeting are available at https://wiki.mozilla.org/Performance/2013-12-05

Release Status

Firefox 26 (release)

projects
  • (start-up) Replace Addon Manager SQLITE with JSON file to reduce impact on start-up due to disk IO
  • (responsive) Reduce Storage connections main-thread operations - API complete at this point, FHR conversion complete, Sqlite.jsm and asyncClose consumers already getting perf wins, additional consumer migration to follow
  • (responsive) Downloads API rewrite to remove noticeable UI pauses due to writing files on the main thread - downloads are a top cause of main thread jank
  • (responsive) Skia GL for all GPUs for Firefox for Android
  • (tooling) Improved Talos tests that really stress svg/scroll performance
  • (tooling) TART, new tab animation test framework
notable fixes
  • (start-up) Small start-up improvement on Android due to Telemetry change (bug 905759, bug 906088)
  • (responsive) Off-main-thread sqlite AsyncClose (bug 874814), Don't load images that aren't visible - was a cause of jank and out of memory (OOM) errors on image heavy sites (bug 847223), Blocklist fewer graphics cards (bug 901494, bug 904266), ~7fps Firefox OS scrolling improvement (bug 942397, bug 942398)
  • (tooling) Better error reporting for Promise and Task (bug 908955), Support for Task-based asynchronous tests in mochitest-browser (bug 872229)

Firefox 27 (beta)

projects
  • (responsive) e10s-style asynchronous session store tab state collection

Firefox 28 (aurora)

projects
  • (responsive) Reduce impact of bookmarks backups
  • (responsive) Remove synchronous session store fallback
  • (responsive) will-animate CSS property for Firefox OS for initial apps
  • (tooling) Background Hang Reporting for Android

Firefox 29 (nightly)

projects
  • (start-up) Skip recursive directory scans for unpacked add-ons
  • (start-up) Remove session store rewrite upon start-up
  • (responsive) Complete asynchronous history API
  • (responsive) Off main thread compositing (OMTC) for Windows
  • (responsive) Reduce impact of thumbnailing by moving work to background thread
  • (responsive) Reduce impact of session store cookie collection
  • (responsive) Remove main-thread I/O from the Login Manager
  • (responsive) Write session restore less often while on battery
  • (responsive) SQLite for chrome workers
  • (responsive) Workers lz4 [de]compression
  • (tooling) New unwind library for profiling on mobile
  • (tooling) Improved Android App Not Responding dashboards
  • (tooling) Power Harness for Firefox OS
  • (tooling) Diagnose and report desktop power usage while idle

Firefox 30

projects
  • (responsive) Incremental Cycle Collection1
  • (responsive) Browser responsiveness benchmark
  • (responsive) OMTC CSS animations
  • (responsive) Reduce impact of session store thread communication
  • (responsive) Counter-measures against misuse of history
  • (tooling) Browser responsiveness benchmark
  • (tooling) Improved Android Background Hang Reporting dashboards

Firefox 31+

  • (start-up) Reducing time to first paint for cold start-up on slow/old hardware2
  • (responsive) Unification of mobile platform graphics (buffer rotation / tiling)
  • (throughput) Network Cache Rewrite3
  • Improve Places Host Storage4
  • Improve Space Efficiency of Places URL Index3

Notes

1

Planning to land incremental cycle collection preffed off by end of 2013. Not yet sure when this work will be able to be preffed on.

2

Reducing time to first paint for cold start-up on slow/old hardware pushed back to Q1 due to focus on other projects.

3

Cache rewrite pushed from Firefox 29 to 31 because writing a crash-recoverable in-RAM index is taking more time than expected.

4

Projects on hold due to lack of resources.