Firefox/Performance

From MozillaWiki
Jump to: navigation, search

Firefox Desktop Perceived Performance Team

The purpose of this team is to improve the perceived performance of Firefox. Our focus is mostly on front-end code that impacts the perceived performance of the browser itself, not the performance of rendering web pages. There are other teams focused on the latter.

Members

  • Mike Conley (:mconley)
  • Florian Queze (:florian)
  • Paolo Amadini (:paolo)
  • Gijs Kruitbosch (:Gijs)
  • Philipp Sackl (:phlsa)
  • Panos Astithas (:past)

Operating principals

  • Our work should impact key user interactions of the browser front-end. From a high-level, these are:
    • Browser startup
    • Tab operations
      • Opening
      • Closing
      • Switching
      • Drag and drop
      • Scrolling
    • Window operations
      • Opening
      • Closing
      • Focusing
    • Menu operations
      • Opening
      • Closing
      • Navigating submenus / subviews
    • URL bar operations
      • Showing the URL bar panel
      • Showing results in the URL bar panel
    • Jank, real or perceived slowness that can occur at seemingly random times in the parent process
    • Browser shutdown
  • If you notice a pattern of performance issues, it is better to try to address the pattern in general than to spot fix individual instances.
    • The playbook is usually: create a whitelist of pre-existing cases of the bad behaviour to make adding new cases impossible, then whittle down the whitelist. Once the whitelist is empty, remove the whitelist.
    • Example: Making main-thread IO impossible is better than fixing a single instance of main-thread IO. We should aim to have a whitelist of places where main-thread IO is currently used, and crash if new main-thread IO is added. We should then file bugs to whittle down the whitelist.
  • If you improve something, try to write regression tests to ensure it doesn't get worse. Mochitests are preferred, as Talos tests can be too noisy to be truly useful.
    • Example: We moved a lot of scripts so that they don't run until after first paint. There are still some scripts remaining, and we've added a whitelist for those scripts. This ensures that the problem we identified cannot get worse, and only better.
    • Example: We've eliminated some synchronous layout flushes caused by our JavaScript code, and have written tests to exercise the user interactions that caused them. Those tests ensure that a whitelist of synchronous layout flushes are possible, which makes it much harder to accidentally add new ones in the future.

Contact

Team Meeting

Day of week Pacific Time Eastern Time UTC Central European Time
Fridays 8:30AM - 9:00AM 11:30AM - 12:00PM 4:30PM - 5:00PM 5:30PM - 6:00PM
  • Frequency: One meeting per week on Friday.
  • Duration: 30 min
  • Vidyo Room: Firefox
  • Meeting notes: Google Doc
  • IRC: #fx-team
  • Mailing list: firefox-dev

Bugzilla

Bugzilla components don't tend to align properly with this project's boundaries, so this team is monitoring bugs across a number of components that block the photon-performance meta bug. Here is the dependency tree. Common components of interest are Firefox:General, Firefox:Tabbed Browser, Toolkit:General and more.

Selecting a New Bug for the Current Release

  1. Select any 'P1' bug which is currently unassigned and not blocked on a dependency. If no 'P1' bugs are available then select from the available 'P2' bugs, and so on.
  2. Add the following if not already present:
  • [fxperf] whiteboard tag.
  • perf keyword.
  • qe-verify-, unless it is a bug that QA can reasonably verify.

Adding a New Bug to the Backlog

  1. Add the [fxperf] tag to the whiteboard.
  2. Add the perf keyword.
  3. Set the bug as a dependency of a user story bug or a meta bug if applicable.
  4. Set the bug priority per the following guidelines or call it out for a priority decision in the Weekly Meeting:
  • 'P1': Must Have - development occurring in the current release.
  • 'P2': Should Have - targeted for next release.
  • 'P3': Could Have - planned for development in an upcoming release.
  • 'P5': Will Have - not scheduled for any particular release, patches accepted.

Submitting a Bug for Triage

  1. Mark the bug by adding the [fxperf] tag to the whiteboard.

Triage

Collection of work waiting for the team to review and determine if it should be included in the Product Backlog

Bugs blocking photon-performance-triage - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
691507 [meta] Periodic hangs in the UI due to Places NEW meta, perf
887887 [meta] Use Sqlite.jsm in Form History NEW [fxperf] main-thread-io, meta, perf
1320534 [meta] Speed and performance of importing bookmarks from JSON or HTML files is awful NEW [fxsearch:p5] hang, meta, nightly-community, perf:frontend
1352518 Avoid calling getComputedStyle() in isElementVisible() in UITour.jsm NEW [API used a few times/year][fxperf:p5] perf
1354562 Consider moving some <style> elements to separate sheets NEW [fxperf:p5]
1355956 [meta] Photon - Make Firefox start more quickly NEW [photon-performance] [fxperf:meta] meta
1355978 show tab favicons immediately UNCONFIRMED [fxperf:p5] blocked-ux, perf
1358390 1.24ms uninterruptible reflow at useLandscapeMode@chrome://devtools/content/inspector/inspector.js:460:27 NEW [ohnoreflow] perf, perf:frontend, perf:responsiveness
1358730 2.41ms uninterruptible reflow at stop@chrome://global/content/bindings/browser.xml:99:13 NEW [ohnoreflow][fxperf:p5] perf
1358810 0.91ms uninterruptible reflow at create@resource://gre/modules/commonjs/toolkit/loader.js -> resource://devtools/client/framework/toolbox-hosts.js:86:5 NEW [ohnoreflow][fxperf:p5] perf
1358899 Opening a link from an external application while Firefox is idle is slow NEW perf
1359408 0.29ms uninterruptible reflow at _handleDOMChange@chrome://extensions/content/ext-browser-content.js:215:24 NEW [ohnoreflow]triaged perf, perf:frontend, perf:responsiveness
1362529 0.97ms uninterruptible reflow at @chrome://browser/content/tab-content.js:85:43 NEW [ohnoreflow][fxperf:p3] perf
1362533 1.0ms uninterruptible reflow at PT__onDragOver@chrome://browser/content/places/browserPlacesViews.js:1600:11 NEW [ohnoreflow][fxperf:p5][snt-scrubbed][places-performance] perf
1364290 1.89ms uninterruptible reflow at insertPlaceholder@resource://app/modules/DragPositionManager.jsm:181:7 NEW [ohnoreflow] perf, perf:frontend
1364324 0.98ms uninterruptible reflow at AreaPositionManager@resource://app/modules/DragPositionManager.jsm:24:23 NEW [ohnoreflow] perf, perf:frontend
1373694 Don't block on beforeunload events from third-party tracking domain scripts NEW perf
1387045 Suppress window animation for profile manager NEW [fxperf:p5]
1387142 Suppress window animation for New Window NEW [fxperf:p3]
1388758 Restoring sessions with multiple windows is very slow NEW perf, perf:frontend, perf:startup
1482654 1.43ms uninterruptible reflow at onxblunderflow@chrome://browser/content/tabbrowser.xml:47:11 NEW [ohnoreflow][fxperf:p3]
1482669 2.25ms uninterruptible reflow at _getDragItemSize@resource:///modules/CustomizeMode.jsm:2216:16 NEW [ohnoreflow][fxperf:p5]
1482670 1.38ms uninterruptible reflow at recreatePopup@resource:///modules/UITour.jsm:1443:5 NEW [ohnoreflow] perf:frontend, perf:responsiveness
1482671 2.32ms uninterruptible reflow at showHighlightElement@resource:///modules/UITour.jsm:1046:24 NEW [ohnoreflow][fxperf:p3]
1482734 2.09ms uninterruptible reflow at onxbldragover@chrome://browser/content/tabbrowser.xml:1391:9 NEW [ohnoreflow] perf:frontend, perf:responsiveness

25 Total; 25 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Tracked bugs without a priority set - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1606879 [meta] Tracking bug for fast shutdown via _exit(0) or similar NEW [fxperf] meta
1627071 [meta] Startup Task DAG Phase 1: Disk IO Orchestration NEW [fxperf] meta

2 Total; 2 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Releases

Current Release

P1: Must Have - development occurring in the current release - View in Bugzilla

Duration: Tuesday January 23 - Monday March 12

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);

Current Release: Completed

View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to Priority
1223303 nsChromeTreeOwner::OnLocationChanged is very confused about what a docshell and a window are RESOLVED [fxperf] Florian Quèze [:florian] --
1336227 Show a blank window as soon as possible after start-up (pref'd off) RESOLVED [fxperf] Florian Quèze [:florian] P2
1425600 Stop using nsIPluginTag.filename and .name thousands of times because it's clownshoes RESOLVED [fxperf] Chris Peterson [:cpeterson] P1
1434376 Make BrowserUtils.promiseReflowed and BrowserUtils.promiseLayoutFlushed reliable RESOLVED [fxperf] Mike Conley (:mconley) (:⚙️) P1
1434945 browser.xul should look correct if it's painted after domcontentloaded RESOLVED [fxperf] Florian Quèze [:florian] P1
1436559 setOverLink loves to do busy-work RESOLVED [fxperf] :Gijs (he/him) P1

6 Total; 0 Open (0%); 6 Resolved (100%); 0 Verified (0%);

Next Release

P2: Should Have - targeted for the current release if production capacity exists - View in Bugzilla

No results.

0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);

Backlog

P3: Could Have - planned for development in an upcoming release - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1344302 [meta] Tab closing performance NEW [photon-performance] [gfx-noted] [fxperf] meta, perf Mike Conley (:mconley) (:⚙️)
1353586 [meta] _saveStateAsync shouldn't pile up on existing jank NEW [fxperf] meta, perf, stale-bug
1356825 [meta] AddonManager startup is too slow NEW , triaged [fxperf] meta, perf
1361095 [meta] Can nsContentPrefService avoid main thread IO before the first window is shown? NEW [fxperf] meta, perf
1580658 [meta] Investigate disk activity on Linux using strace NEW [fxperf] meta, perf
1789275 Could we startup the skeleton ui earlier? NEW [fxperf]

6 Total; 6 Open (100%); 0 Resolved (0%); 0 Verified (0%);

Patches Accepted

P5: Will Have - not scheduled for any particular release, patches accepted - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
1349822 [meta] updateCurrentBrowser can be slow NEW [fxperf] meta, perf

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);

¯\_(ツ)_/¯

P4: (should be reprioritized to P3 or P5) - View in Bugzilla

Full Query
ID Summary Status Whiteboard Keywords Assigned to
887887 [meta] Use Sqlite.jsm in Form History NEW [fxperf] main-thread-io, meta, perf

1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);