Performance/Snappy: Difference between revisions
m (→arewesnappyyet.com: ("how" was typed twice)) |
|||
(115 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
Snappy | =Project "Snappy"= | ||
== | ==Goal== | ||
Project Snappy will make improvements to Firefox desktop responsiveness by completing smaller, isolated pieces of work. | |||
{{conf| | This project is a responsiveness equivalent of [[Performance/MemShrink]]. | ||
* Vidyo: | |||
===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/ | * 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- | * 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 | * [[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=[[130,1,1],[130,1,12],[130,1,13],[130,1,21],[130,1,22]]&sel=1322091900253,1322167344714&displayrange=7&datatype=running Talos responsiveness tests] - for details see {{bug|631571}} | * [http://graphs-new.mozilla.org/graph.html#tests=[[130,1,1],[130,1,12],[130,1,13],[130,1,21],[130,1,22]]&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
|
all |
Meeting summaries | this wiki and Taras Glek's blog | all |
Press
- May 14, 2012 - PCWorld: Firefox 13 Gets a Triple Shot of Speed Through Mozilla's 'Project Snappy'
- May 11, 2012 - WebProNews: Mozilla Makes Firefox 13 Super Speedy
Blog Posts
- Mar 12, 2013 Benoit Girard: Shutdown Report Results
- Feb 15, 2013 Aaron Klotz: Plugin Hang UI on Aurora
- Jan 24, 2013 Vladan Djeric: Add-on performance problems
- Jan 18, 2013 Benoit Girard: Is Your Shutdown Slow? Turn On The Performance Reporter!
- Jan 11, 2013 Benoit Girard: Analyzing page load performance frame-by-frame
- Jan 4, 2013 - Taras Glek: Snappy: 2012 Summary
- Dec 5, 2012 - Benoid Girard: Analyzing Shutdown Performance
- Nov 25, 2012 - Vladan Djeric: New about:telemetry page in Firefox 19
- Sep 22, 2012 - Jared Wein: Firefox Performance/Snappy Work Week: Warsaw edition
- Sep 18, 2012 - Taras Glek: Snappy in Warsaw: pierogy-fueled hackfest
- Jun 8, 2012 - Vladan Djeric: Cache, plugin, font operations most common in chrome hang reports
- May 30, 2012 - Vladan Djeric: Profiling with the Built-in Gecko Profiler and Local Symbols on Windows
- May 17, 2012 - Vladan Djeric: Looking at my own about:telemetry data
- May 14, 2012 - Vladan Djeric: More Telemetry from Super-Slow Startups
- May 11, 2012 - Lawrence Mandel: Getting snappy – performance optimizations in Firefox 13
- Mar 21, 2012 - Vladan Djeric: Introducing Chrome Hang Reporting and the Symbolication Server
- Mar 14, 2012 - Dietrich Ayala: Firefox 11 is Smaller and Faster
- Feb 8, 2012 - Brian Bondy: Snappy optimizations for faster Firefox startup
- Jan 31, 2012 - Vladan Djeric: Telemetry from Super-slow Startups, First Impressions
Minutes and Progress Reports
2013 |
---|
|
2012 | |
---|---|
|
2011 |
---|
|
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.
- Snappy dashboard - shows recent Snappy changes
- Unprioritized Snappy bugs. These are triaged occasionally.
- Snappy:P1 bugs. These are discussed regularly in meetings.
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
- Snappy:P3 bugs. These are discussed rarely in meetings.
Bugzilla query error
Invalid type (count) and display (table) combination1
Some other interesting bugs/lists.
- bugs that need telemetry probes implemented
- visible unresponsiveness metabug
- sync storage main-thread-io metabug
- cycle collector responsiveness metabug
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
- Capture a profile of the jank with SPS Profiler.
- File a bug under Tech Evangelism/Add-ons. Describe the issue, steps to reproduce. 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 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
- about:jank
- Inline autocomplete
- Slow SQL Telemetry
- All fixed bugs
- 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
- Information on adding new Telemetry probes
- 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
- Produces output of the form MOZ_EVENT_TRACE sample <timestamp> <duration>
- Being rolled out as part of Talos Tp5 bug 631571, will produce a responsiveness metric for "responsiveness while running Tp5"
- Peptest: bug 674606
- Responsiveness regression test harness
- Allows devs to write tests that perform various actions and tests responsiveness using EventTracer
- Project page contains everything you need to know
- Run 'make peptest' from your object directory to run the tests (see running tests for command line instructions)
- Talos responsiveness tests - for details see bug 631571
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.
- 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:
- Meta Bugs: visible responsiveness (bug 698500), sync storage (bug 699820), cycle collector (bug 698919)
- Animation hangs are most visible
- Windows, Mac, Linux are all unique -- Windows is P1 for the project
- Firefox Built-in Profiler: late Q1'2012
- Chromhang Bugs: bug 705761, bug 705287, bug 705258, bug 705594, bug 704933, bug 699051
- Small Jank: using refresh driver to measure refresh-rate performance (ie. throbber, progress bar, etc -- Asa has more ideas)
- Measuring Snappiness: Telemetry use cases
- Metrics/Automation: for trend-analysis, finding regressions with Telemetry
- 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