Performance/Snappy: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
m (→‎arewesnappyyet.com: ("how" was typed twice))
 
(115 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Snappy is a project that aims to improve Firefox responsiveness. This project is a responsiveness equivalent of [[Performance/MemShrink]].
=Project "Snappy"=


== Meetings ==
==Goal==
Meetings will happen every Thursday at 11am Pacific time.
Project Snappy will make improvements to Firefox desktop responsiveness by completing smaller, isolated pieces of work.


{{conf|95346}}
This project is a responsiveness equivalent of [[Performance/MemShrink]].
* Vidyo: PB&J
 
===Scope===
* Code that impacts the responsiveness of the Firefox desktop browser
* Out of scope
** Major architectural changes such as electrolysis (e10s) and supersnappy
** Firefox mobile, apps WebRT, B2G
** Development of performance benchmarks
** UI changes for perceived performance
 
==Projects==
 
* Temporary & Severe Browser Hangs
* Content Responsiveness (intermittent hangs)
* [[Performance/Snappy/Startup&Shutdown | Start-up & Shutdown]]
* Tools
* Add-on and Web page introduced slowness
* Page load
* [[Performance/Snappy/Tabstrip | Tabstrip]]
 
==Communication==
{| class="wikitable fullwidth-table"
! Communication Type !! Mechanism !! Audience
|-
| Announcements || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] and [https://lists.mozilla.org/listinfo/dev-planning dev-planning] lists || all
|-
| General discussion || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] list || devs
|-
| Meetings || Alternate Thursdays, 11am PT
{{conf|99355}}
* Vidyo: Performance, [https://v.mozilla.com/flex.html?roomdirect.html&key=SxuriCZcSSNL Guest URL]
* IRC: [irc://irc.mozilla.org/perf #perf]
* IRC: [irc://irc.mozilla.org/perf #perf]
* Etherpad: [https://etherpad.mozilla.org/snappy snappy] (copied to wiki after the meeting)
* Etherpad: [https://etherpad.mozilla.org/snappy snappy] (copied to wiki after the meeting)  
|| all
|-
| Meeting summaries || [[Performance/Snappy | this wiki]] and [https://blog.mozilla.org/tglek/ Taras Glek's blog] || all
|}


== Minutes and Progress Reports  ==
===Press===
*[[Performance/Snappy/2011-12-01| Minutes Thu, Dec 1, 2011]]
* May 14, 2012 - [http://www.pcworld.com/article/255569/firefox_13_gets_a_triple_shot_of_speed_through_mozillas_project_snappy.html PCWorld: Firefox 13 Gets a Triple Shot of Speed Through Mozilla's 'Project Snappy']
*[[Performance/Snappy/2011-11-18| Minutes Fri, Nov 18, 2011]]
* May 11, 2012 - [http://www.webpronews.com/mozilla-makes-firefox-13-super-speedy-2012-05 WebProNews: Mozilla Makes Firefox 13 Super Speedy]
 
===Blog Posts===
* Mar 12, 2013 [http://benoitgirard.wordpress.com/2013/03/12/shutdown-report-results/ Benoit Girard: Shutdown Report Results]
* Feb 15, 2013 [http://dblohm7.ca/blog/2013/02/15/plugin-hang-ui-on-aurora/ Aaron Klotz: Plugin Hang UI on Aurora]
* Jan 24, 2013 [https://blog.mozilla.org/vdjeric/2013/01/24/add-on-performance-problems/ Vladan Djeric: Add-on performance problems]
* Jan 18, 2013 [http://benoitgirard.wordpress.com/2013/01/18/is-your-shutdown-slow-turn-on-the-performance-reporter/ Benoit Girard: Is Your Shutdown Slow? Turn On The Performance Reporter!]
* Jan 11, 2013 [http://benoitgirard.wordpress.com/2013/01/11/analyzing-page-load-performance-frame-by-frame/ Benoit Girard: Analyzing page load performance frame-by-frame]
* Jan 4, 2013 - [http://taras.glek.net/blog/2013/01/04/snappy-2012-summary/ Taras Glek: Snappy: 2012 Summary]
* Dec 5, 2012 - [http://benoitgirard.wordpress.com/2012/12/05/analyzing-shutdown-performance/ Benoid Girard: Analyzing Shutdown Performance]
* Nov 25, 2012 - [https://blog.mozilla.org/vdjeric/2012/11/25/new-abouttelemetry-page-in-firefox-19/ Vladan Djeric: New about:telemetry page in Firefox 19]
* Sep 22, 2012 - [http://msujaws.wordpress.com/2012/09/22/firefox-performancesnappy-work-week-warsaw-edition/ Jared Wein: Firefox Performance/Snappy Work Week: Warsaw edition]
* Sep 18, 2012 - [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras Glek: Snappy in Warsaw: pierogy-fueled hackfest]
* Jun 8, 2012 - [https://blog.mozilla.org/vdjeric/2012/06/08/cache-plugin-font-operations-most-common-in-chrome-hang-reports/ Vladan Djeric: Cache, plugin, font operations most common in chrome hang reports]
* May 30, 2012 - [https://blog.mozilla.org/vdjeric/2012/05/30/profiling-with-the-built-in-gecko-profiler-and-local-symbols-on-windows/ Vladan Djeric: Profiling with the Built-in Gecko Profiler and Local Symbols on Windows]
* May 17, 2012 - [https://blog.mozilla.org/vdjeric/2012/05/17/looking-at-my-own-abouttelemetry-data/ Vladan Djeric: Looking at my own about:telemetry data]
* May 14, 2012 - [https://blog.mozilla.org/vdjeric/2012/05/14/more-telemetry-from-super-slow-startups/ Vladan Djeric: More Telemetry from Super-Slow Startups]
* May 11, 2012 - [https://hacks.mozilla.org/2012/05/getting-snappy-performance-optimisations-in-firefox-13/ Lawrence Mandel: Getting snappy – performance optimizations in Firefox 13]
* Mar 21, 2012 -  [https://blog.mozilla.org/vdjeric/2012/03/21/introducing-chrome-hang-reporting-and-the-symbolication-server/ Vladan Djeric: Introducing Chrome Hang Reporting and the Symbolication Server]
* Mar 14, 2012 - [http://autonome.wordpress.com/2012/03/14/firefox-11-is-smaller-and-faster/ Dietrich Ayala: Firefox 11 is Smaller and Faster]
* Feb 8, 2012 - [http://www.brianbondy.com/blog/id/127/ Brian Bondy: Snappy optimizations for faster Firefox startup]
* Jan 31, 2012 - [https://blog.mozilla.org/vdjeric/2012/01/31/telemetry-from-super-slow-startups-first-impressions/ Vladan Djeric: Telemetry from Super-slow Startups, First Impressions]
 
=== Minutes and Progress Reports  ===
{| class="wikitable collapsible" style="width: 100%"
! style="background-color: rgb(221, 221, 221);" | 2013
|-
|
* Thursday, March 7, 2013 - [[Performance/Snappy/2013-03-07| Minutes]], [http://taras.glek.net/blog/2013/03/08/snappy-number-52/ Snappy #52]
* Thursday, February 21, 2013 - [[Performance/Snappy/2013-02-21| Minutes]], [http://taras.glek.net/blog/2013/02/22/snappy-number-51-smoothing-tab-animations/ Snappy #51: Smoothing Tab Animations]
* Thursday, February 7, 2013 - [[Performance/Snappy/2013-02-07| Minutes]]
* Thursday, January 24, 2013 - [[Performance/Snappy/2013-01-24| Minutes]], [http://taras.glek.net/blog/2013/01/28/snappy-number-50-misc-speedups/ Snappy #50]
* Thursday, January 17, 2013 - [[Performance/Snappy/2013-01-17| Status (no meeting)]], [http://taras.glek.net/blog/2013/01/21/snappy-number-49-help-firefox-shutdown-faster/ Snappy #49: Help Firefox Shutdown Faster]
* Thursday, January 10, 2013 - [[Performance/Snappy/2013-01-10| Minutes]], [http://taras.glek.net/blog/2013/01/10/snappy-number-48-now-with-faster-shutdown/ Snappy #48: Now With Faster Shutdown]
* Thursday, January 3, 2013 - no status due to holidays
|}
 
{| class="wikitable collapsible collapsed" style="width: 100%"
! style="background-color: rgb(221, 221, 221);" colspan="2" | 2012
|-
|
* Thursday, December 27, 2012 - Meeting cancelled for holidays.
* Thursday, December 20, 2012 - [[Performance/Snappy/2012-12-20| Status (no meeting)]], [https://blog.mozilla.org/vdjeric/2012/12/25/snappy-46-december-progress/ Snappy #46: December Progress]
* Thursday, December 13, 2012 - [[Performance/Snappy/2012-12-13| Minutes]]
* Thursday, December 6, 2012 - [[Performance/Snappy/2012-12-06| Status (no meeting)]]
* Thursday, November 29, 2012 - [[Performance/Snappy/2012-11-29| Minutes]]
* Thursday, November 22, 2012 - No status update due to US Thanksgiving
* Thursday, November 15, 2012 - [[Performance/Snappy/2012-11-15| Minutes]], [https://blog.mozilla.org/tglek/2012/11/16/snappy-44-fixing-tab-switching-in-vancouver/ Snappy #44: Fixing tab switching in Vancouver]
* Thursday, November 8, 2012 - [[Performance/Snappy/2012-11-08| Status (no meeting)]]
* Thursday, November 1, 2012 - [[Performance/Snappy/2012-11-01| Minutes]], [https://blog.mozilla.org/tglek/2012/11/05/snappy-43-big-improvements-faster-startup-smoother-tabstrip/ Snappy #43: Big improvements: faster startup? Smoother tabstrip!]
* Thursday, October 25, 2012 - [[Performance/Snappy/2012-10-25| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/10/26/snappy-42/ Snappy #42]
* Thursday, October 18, 2012 - [[Performance/Snappy/2012-10-18| Minutes]], [https://blog.mozilla.org/tglek/2012/10/18/snappy-41/ Snappy #41]
* Thursday, October 11, 2012 - [[Performance/Snappy/2012-10-11| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/10/15/snappy-40-faster-tabswitching-startup-analysis/ Snappy #40: Faster tabswitching, startup analysis]
* Thursday, October 4, 2012 - [[Performance/Snappy/2012-10-04| Minutes]], [https://blog.mozilla.org/tglek/2012/10/04/snappy-39/ Snappy #39]
* Thursday, September 27, 2012 - [[Performance/Snappy/2012-09-27| Status (no meeting)]]
* Thursday, September 20, 2012 - [[Performance/Snappy/2012-09-20| Minutes]]
* Snappy work week Sep 10-14. You may want to read [https://blog.mozilla.org/tglek/2012/09/18/snappy-in-warsaw-pierogy-fueled-hackfest/ Taras' summary], [http://people.mozilla.org/~jjensen/pres/2012/snappy Snappy Thanks presentation] from John Jensen
* Thursday, September 6, 2012 - [[Performance/Snappy/2012-09-06| Minutes]]
* Thursday, August 30, 2012 - [https://blog.mozilla.org/tglek/2012/09/04/snappy-38/ Snappy #38]
* Thursday, August 23, 2012 - [[Performance/Snappy/2012-08-23| Minutes]], Progress report: [https://blog.mozilla.org/tglek/2012/08/23/snappy-37/ Snappy #37]
* Thursday, August 16, 2012 - [[Performance/Snappy/2012-08-16| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/16/snappy-36/ Snappy #36]
* Thursday, August 9, 2012 - [[Performance/Snappy/2012-08-09| Minutes]], [https://blog.mozilla.org/tglek/2012/08/14/snappy-for-aug-9/ Snappy for Aug 9]
* Thursday, August 2, 2012 - [[Performance/Snappy/2012-08-02| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/08/06/snappy-aug-2/ Snappy, Aug 2]
* Thursday, July 26, 2012 - [[Performance/Snappy/2012-07-26| Minutes]], [https://blog.mozilla.org/tglek/2012/07/26/snappy-july-26-go-try-the-gecko-profiler/ Snappy, July 26: Go Try The Gecko Profiler!]
* Thursday, July 19, 2012 - [[Performance/Snappy/2012-07-19| Status (no meeting)]], [https://blog.mozilla.org/tglek/2012/07/23/snappy-july-19-telemetry-experiments/ Snappy, July 19: Telemetry Experiments]
* Thursday, July 12, 2012 - [[Performance/Snappy/2012-07-12| Minutes]]
* Thursday, July 5, 2012 - [[Performance/Snappy/2012-07-05| Status (no meeting)]]
* Thursday, June 28, 2012 - [[Performance/Snappy/2012-06-28| Minutes]]
* Thursday, June 21, 2012 - [[Performance/Snappy/2012-06-21| Status (no meeting)]]
* Thursday, June 14, 2012 - [[Performance/Snappy/2012-06-14| Minutes]]
* Thursday, June 7, 2012 - [[Performance/Snappy/2012-06-07| Status (no meeting)]]
* Thursday, May 31, 2012 - [[Performance/Snappy/2012-05-31| Minutes]]
* Thursday, May 24, 2012 - [[Performance/Snappy/2012-05-24| Status (no meeting)]]
* Thursday, May 17, 2012 - [[Performance/Snappy/2012-05-17| Minutes]]
* Thursday, May 10, 2012 - [[Performance/Snappy/2012-05-10| Status (no meeting)]]
* Thursday, May 3, 2012 - [[Performance/Snappy/2012-05-03| Minutes]]
* Thursday, April 26, 2012 - [[Performance/Snappy/2012-04-26| Minutes]]
* Thursday, April 19, 2012 - [[Performance/Snappy/2012-04-19| Minutes]]
* Thursday, April 12, 2012 - [[Performance/Snappy/2012-04-12| Minutes]]
* Thursday, April 5, 2012 - [[Performance/Snappy/2012-04-05| Minutes]]
* Thursday, March 29, 2012 - [[Performance/Snappy/2012-03-29| Minutes]]
* Thursday, March 22, 2012 - [[Performance/Snappy/2012-03-22| Minutes]]
* Thursday, March 15, 2012 - [[Performance/Snappy/2012-03-15| Minutes]]
* Thursday, March 8, 2012 - [[Performance/Snappy/2012-03-08| Minutes]]
* Thursday, March 1, 2012 - [[Performance/Snappy/2012-03-01| Minutes]]
* Thursday, February 23, 2012 - [[Performance/Snappy/2012-02-23| Minutes]]
* Thursday, February 16, 2012 - [[Performance/Snappy/2012-02-16| Minutes]]
* Thursday, February 9, 2012 - [[Performance/Snappy/2012-02-09| Minutes]]
* Thursday, February 2, 2012 meeting cancelled due to travel
* Thursday, January 26, 2012 - [[Performance/Snappy/2012-01-26| Minutes]]
* Thursday, January 19, 2012 - [[Performance/Snappy/2012-01-19| Minutes]]
* Thursday, January 12, 2012 - [[Performance/Snappy/2012-01-12| Minutes]]
* Thursday, January 5, 2012 meeting cancelled due to holidays
|}
 
{| class="wikitable collapsible collapsed" style="width: 100%"
! style="background-color: rgb(221, 221, 221);" | 2011
|-
|
* Thursday, December 29, 2011 - meeting cancelled due to holidays
* Thursday, December 22, 2011 - [[Performance/Snappy/2011-12-22| Minutes]], [https://blog.mozilla.org/tglek/2011/12/22/snappy-dec-22/ Progress report]
* Thursday, December 15, 2011 - [[Performance/Snappy/2011-12-15| Minutes]], [https://blog.mozilla.org/tglek/2011/12/16/snappy-update-for-dec-15/ Progress report]
* Thursday, December 8, 2011 - [[Performance/Snappy/2011-12-08| Minutes]], [https://blog.mozilla.org/tglek/2011/12/13/snappy-summary-for-dec-8/ Progress report]
* Thursday, December 1, 2011 - [[Performance/Snappy/2011-12-01| Minutes]], [https://blog.mozilla.org/tglek/2011/12/01/introducing-project-snappy/ Progress report]
* Friday, November 18, 2011 - [[Performance/Snappy/2011-11-18| Minutes]]
|}


== Bug Tracking ==
== Bug Tracking ==
Bugs tracked by the Snappy project are prioritized by adding one of [Snappy:P1], [Snappy:P2], or [Snappy:P3] to the whiteboard. Use whiteboard [Snappy] tag to nominate bugs.
Bugs tracked by the Snappy project are prioritized by adding one of [Snappy:P1], [Snappy:P2], or [Snappy:P3] to the whiteboard. Use whiteboard [Snappy] tag to nominate bugs.


* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp&query_format=advanced&list_id=577353&status_whiteboard=Snappy%5b%5e%3A%5d&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&resolution=---&resolution=DUPLICATE Unprioritized Snappy bugs].  These are triaged regularly in meetings.
* [[Performance/Snappy/Dashboard | Snappy dashboard]] - shows recent Snappy changes
 
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp&query_format=advanced&list_id=577353&status_whiteboard=Snappy%5b%5e%3A%5d&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&resolution=---&resolution=DUPLICATE Unprioritized Snappy bugs].  These are triaged occasionally.
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP1&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P1 bugs].  These are discussed regularly in meetings.
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP1&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P1 bugs].  These are discussed regularly in meetings.
<bugzilla type="count" display="bar">
    {
        "whiteboard": "[snappy:p1]",
        "x_axis_field": "status"
    }
</bugzilla>
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP2&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P2 bugs].  These are discussed occasionally in meetings.  P2 is the default priority.
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP2&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P2 bugs].  These are discussed occasionally in meetings.  P2 is the default priority.
<bugzilla type="count" display="bar">
    {
        "whiteboard": "[snappy:p2]",
        "x_axis_field": "status"
    }
</bugzilla>
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP3&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P3 bugs].  These are discussed rarely in meetings.
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=463753&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=Snappy%3AP3&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.bug_id Snappy:P3 bugs].  These are discussed rarely in meetings.
<bugzilla type="count" display="bar">
    {
        "whiteboard": "[snappy:p3]",
        "x_axis_field": "status"
    }
</bugzilla>


Some other interesting bugs/lists.
Some other interesting bugs/lists.
 
* [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=regexp;query_format=advanced;status_whiteboard=telemetry-needed;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;resolution=---;resolution=DUPLICATE;list_id=2435528 bugs that need telemetry probes implemented]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698500 visible unresponsiveness metabug]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=698500 visible unresponsiveness metabug]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=699820 sync storage main-thread-io metabug]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=699820 sync storage main-thread-io metabug]
Line 39: Line 197:
* "Above the fold" uncached page load on par with IE and Chrome
* "Above the fold" uncached page load on par with IE and Chrome
* Back/Forward navigation as fast as Opera.
* Back/Forward navigation as fast as Opera.
== Snappy Addons ==
If you discover an addon that may be causing responsiveness issues
# Capture a profile of the jank with [https://developer.mozilla.org/en/Performance/Profiling_with_the_Built-in_Profiler SPS Profiler].
# File a bug under Tech Evangelism/Add-ons. Describe the issue, steps to reproduce. [https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism bugzilla link].
# Upload your SPS profile + post link in bug
# Contact addon author. Authors are usually happy to make their addons more performant.
# If the developer isn't responsive we will get AMO team involved to consider delisting the offending addon version.
See {{bug|777397}} for an example of above process.
== Wins ==
<bugzilla type="count" display="bar">
    {
        "whiteboard": "[snappy",
        "resolution": "fixed",
        "x_axis_field": "target_milestone"
    }
</bugzilla>
;Firefox 16
* [http://bit.ly/LOFsXE All fixed bugs]
;Firefox 15
* Start-up optimization - remove prefetch files (backed out in Firefox 16)
* No more font enumeration
* [http://mzl.la/Iwq9xT All fixed bugs]
;Firefox 14
* IE profile migrator rewrite
* Async favicons
* Slow SQL Telemetry
* [http://bit.ly/GGBpJ5 All fixed bugs]
;Firefox 13
* Tabs on demand
* CC/GC pause reductions
* Start-up optimizations
* Front-end Telemetry
* [http://j.mp/wXnf5x All fixed bugs]
;Firefox 12
* <nowiki>about:jank</nowiki>
* Inline autocomplete
* Slow SQL Telemetry
* [http://j.mp/AhayWF All fixed bugs]
;Firefox 11
* [http://j.mp/ypxFzj All fixed bugs]
==Snappy TODO==
===Firefox===
* {{nbug|712478}}: interactivity heuristics (to reduce jank while playing video, scrolling)
* {{nbug|650968}}: fix personas (startup slowdown, possibly other jank)
* {{nbug|729330}}: fix addon manager (startup slowdown)
* {{nbug|699820}}: fix remaining main thread sqlite (significant source of jank)
* {{nbug|743069}}: fix our tab bar responsiveness (switching tabs, tab animations, etc. We lag other browsers in this area)
===Platform===
* {{nbug|627635}} Make localstorage async (Don't allow web pages to jank us)
* {{nbug|692255}} get rid of windows prefetch (so we can enable library reordering for a big startup win)
* {{nbug|722243}} cancellable sql queries (Cancel background queries to improve interactive performance)
* {{nbug|692557}} Fix GFX acceleration lag (Currently GFX acceleration can result in a severe slowdown over non-accelerated case)
* {{nbug|705594}} Font enumeration lag (This can add minutes of lag on some windows/mac machines)
* OFTC on desktop (Needed for smooth animations)
* Necko improvements (cache, connection pools, etc)


== Current Infrastructure ==
== Current Infrastructure ==


* [https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe Information on adding new Telemetry probes]
* Event Tracing: http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/EventTracer.cpp#38
* Event Tracing: http://mxr.mozilla.org/mozilla-central/source/toolkit/xre/EventTracer.cpp#38
** Fires events at main thread event loop from background thread, measures response time
** Fires events at main thread event loop from background thread, measures response time
Line 55: Line 279:


* [http://graphs-new.mozilla.org/graph.html#tests=&#91;&#91;130,1,1&#93;,&#91;130,1,12&#93;,&#91;130,1,13&#93;,&#91;130,1,21&#93;,&#91;130,1,22&#93;&#93;&sel=1322091900253,1322167344714&displayrange=7&datatype=running Talos responsiveness tests] - for details see {{bug|631571}}
* [http://graphs-new.mozilla.org/graph.html#tests=&#91;&#91;130,1,1&#93;,&#91;130,1,12&#93;,&#91;130,1,13&#93;,&#91;130,1,21&#93;,&#91;130,1,22&#93;&#93;&sel=1322091900253,1322167344714&displayrange=7&datatype=running Talos responsiveness tests] - for details see {{bug|631571}}


== Additional Infrastructure ==
== Additional Infrastructure ==

Latest revision as of 17:15, 12 March 2013

Project "Snappy"

Goal

Project Snappy will make improvements to Firefox desktop responsiveness by completing smaller, isolated pieces of work.

This project is a responsiveness equivalent of Performance/MemShrink.

Scope

  • Code that impacts the responsiveness of the Firefox desktop browser
  • Out of scope
    • Major architectural changes such as electrolysis (e10s) and supersnappy
    • Firefox mobile, apps WebRT, B2G
    • Development of performance benchmarks
    • UI changes for perceived performance

Projects

  • Temporary & Severe Browser Hangs
  • Content Responsiveness (intermittent hangs)
  • Start-up & Shutdown
  • Tools
  • Add-on and Web page introduced slowness
  • Page load
  • Tabstrip

Communication

Communication Type Mechanism Audience
Announcements dev-platform and dev-planning lists all
General discussion dev-platform list devs
Meetings Alternate Thursdays, 11am PT
  • Dial-in: Audio-only conference# 99355
    • People with Mozilla phones or softphones please dial x4000 Conf# 99355
    • US/Toll-free: +1 800 707 2533, (pin 4000) Conf# 99355
    • US/California/Mountain View: +1 650 903 0800, x4000 Conf# 99355
    • US/California/San Francisco: +1 415 762 5700, x4000 Conf# 99355
    • US/Oregon/Portland: +1 971 544 8000, x4000 Conf# 99355
    • CA/British Columbia/Vancouver: +1 778 785 1540, x4000 Conf# 99355
    • CA/Ontario/Toronto: +1 416 848 3114, x4000 Conf# 99355
    • UK/London: +44 (0)207 855 3000, x4000 Conf# 99355
    • FR/Paris: +33 1 84 88 37 37, x4000 Conf# 99355
    • Gmail Chat (requires Flash and the Google Talk plugin): paste +1 650 903 0800 into the Gmail Chat box that doesn't look like it accepts phone numbers
    • SkypeOut is free if you use the 800 number
  • Vidyo: Performance, Guest URL
  • IRC: #perf
  • Etherpad: snappy (copied to wiki after the meeting)
all
Meeting summaries this wiki and Taras Glek's blog all

Press

Blog Posts

Minutes and Progress Reports

2013

Bug Tracking

Bugs tracked by the Snappy project are prioritized by adding one of [Snappy:P1], [Snappy:P2], or [Snappy:P3] to the whiteboard. Use whiteboard [Snappy] tag to nominate bugs.

Bugzilla query error

Invalid type (count) and display (table) combination1

  • Snappy:P2 bugs. These are discussed occasionally in meetings. P2 is the default priority.

Bugzilla query error

Invalid type (count) and display (table) combination1

Bugzilla query error

Invalid type (count) and display (table) combination1


Some other interesting bugs/lists.

Goals

  • 50ms responsiveness when typing in a textbox (bug 703668)
  • 60fps animations on UI operations, i.e. closing tabs (bug 702509)
  • track above via telemetry

more goal thinking responsiveness goals

My (Asa) proposed core measures:

  • Startup on par with IE and Chrome
  • 50ms responsiveness for all non-animated primary UI interactions (list TBD)
  • "Above the fold" uncached page load on par with IE and Chrome
  • Back/Forward navigation as fast as Opera.

Snappy Addons

If you discover an addon that may be causing responsiveness issues

  1. Capture a profile of the jank with SPS Profiler.
  2. File a bug under Tech Evangelism/Add-ons. Describe the issue, steps to reproduce. bugzilla link.
  3. Upload your SPS profile + post link in bug
  4. Contact addon author. Authors are usually happy to make their addons more performant.
  5. If the developer isn't responsive we will get AMO team involved to consider delisting the offending addon version.

See bug 777397 for an example of above process.

Wins

Bugzilla query error

Invalid type (count) and display (table) combination1

Firefox 16
Firefox 15
  • Start-up optimization - remove prefetch files (backed out in Firefox 16)
  • No more font enumeration
  • All fixed bugs
Firefox 14
  • IE profile migrator rewrite
  • Async favicons
  • Slow SQL Telemetry
  • All fixed bugs
Firefox 13
  • Tabs on demand
  • CC/GC pause reductions
  • Start-up optimizations
  • Front-end Telemetry
  • All fixed bugs
Firefox 12
Firefox 11

Snappy TODO

Firefox

  • 712478: interactivity heuristics (to reduce jank while playing video, scrolling)
  • 650968: fix personas (startup slowdown, possibly other jank)
  • 729330: fix addon manager (startup slowdown)
  • 699820: fix remaining main thread sqlite (significant source of jank)
  • 743069: fix our tab bar responsiveness (switching tabs, tab animations, etc. We lag other browsers in this area)

Platform

  • 627635 Make localstorage async (Don't allow web pages to jank us)
  • 692255 get rid of windows prefetch (so we can enable library reordering for a big startup win)
  • 722243 cancellable sql queries (Cancel background queries to improve interactive performance)
  • 692557 Fix GFX acceleration lag (Currently GFX acceleration can result in a severe slowdown over non-accelerated case)
  • 705594 Font enumeration lag (This can add minutes of lag on some windows/mac machines)
  • OFTC on desktop (Needed for smooth animations)
  • Necko improvements (cache, connection pools, etc)

Current Infrastructure


Additional Infrastructure

  • Have metrics do continuous trend analysis to see if our telemetry stats are getting better over time.

arewesnappyyet.com

  • This should use our telemetry data to tell us whether we are meeting our expectations and how far off we are
  • bug 703669 tracks the implementation of this site

Testing

Placeholder section for QA and testing.

Sprint 1 Phase 1
Takeaways from 2011-12-01 Meeting
  • Goal of Project:
    • Big hangs (~30s) are a problem, but small hangs (~5s) may be a bigger win
    • Identify where we hang, why we hang, and plug those holes
  • Things on Devs Radar:
  • Where does QA fit in?
    • P1: Desktop responsiveness competitive testing
    • many of these problems need stack traces (something Telemetry cannot do)
    • crowd-sourcing use cases where we are less Snappy
    • A-B testing with other browsers (versions of Firefox, competitor browsers)
    • Ownership of Snappy P1s
    • Caching issues should have patches landed in the next week or so