Performance/Snappy

From MozillaWiki
Jump to: navigation, search

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.

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

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

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