Personal tools

Performance

From MozillaWiki

Revision as of 07:08, 12 July 2013 by LawrenceMandel (Talk | contribs)

Jump to: navigation, search

Contents

Performance

Mozilla's performance program focuses on improvements to the Gecko platform and the Firefox Desktop, Firefox for Android, and Firefox OS products.

Projects

Active

Incremental Cycle Collection (ICC)

Product impact [DESKTOP] [MOBILE] [B2G]
Goal Implement incremental cycle collection to reduce1 cycle collector pauses in the Firefox UI.

1Reduction in cycle collector pauses will be measured with the CYCLE_COLLECTOR_FULL Telemetry probe. The degree of reduction that can be achieved is currently unclear.

Duration TBD
Team Andrew McCreight (lead)
Progress reports TeamStatus: Andrew McCreight
Work bug 850065
Dependencies
Notes

Keep JS-accessible APIs from blocking the main thread

Product impact [DESKTOP] [MOBILE] [B2G]
Goal Refactor existing and provide new JS APIs to either migrate services, components, and add-ons off the main thread or at least prevent them from blocking the main thread.
Duration TBD
Team David Rajchenbach-Teller (lead), Paolo Amadini
Progress reports TeamStatus: David Rajchenbach-Teller
Work Bugzilla query
Dependencies
Notes This project focuses on JS-accessible APIs in the context of Web Workers.

Profiler Backend for Mobile

Product impact [MOBILE] [B2G]
Goal Accurate1, crash-free, deadlock-free, low overhead2 stack unwinding for the SPS profiler for Firefox for Android and Firefox OS.

[1]The correct sequence of code return addresses on the stack, ideally without the unwind terminating before it gets back to main().
[2]Average unwind cost of 500 microseconds for a 30-frame backtrace on one core of a 1 GHz Cortex A9

Duration TBD
Team Julian Seward (lead), Benoit Girard, Mike Hommey
Progress reports Julian Seward's blog, TeamStatus: Julian Seward, Benoit Girard, Mike Hommey
Work bug 863453
Dependencies
Notes May impact desktop Linux as well.

Reducing time to first paint - Phase 1

Product impact [DESKTOP]
Goal A 10% reduction1 in time between XRE_Main and first paint2 during cold starts3 on Windows 7 with no extensions installed4, on reference slow hardware5, 30 seconds after an OS reboot.

[1]Currently, after an OS restart, XRE_Main to firstPaint takes about 4.2 seconds on the reference hardware. A 10% reduction will be ~400ms.
[2]XRE_Main as the starting point to exclude the impact of loading Firefox binaries as they grow bigger with every release. First paint to exclude the impact of Yoric's session store refactor work.
[3]Cold start because a lot of the work will be focused on reducing the amount of I/O done during startup.
[4]No extensions to exclude the impact of Irving's Add-on Manager work.
[5]The reference hardware is a recent, slow Win7 laptop with an AMD C-50 dual-core @ 1 GHz, magnetic HDD, and 2GB shared RAM. A slow Windows laptop is used because it is consistently slow and can be easily debugged.

Duration TBD
Team Vladan Djeric (lead)
Progress reports Vladan Djeric's blog, TeamStatus: Vladan Djeric
Work bug 810156
Dependencies Replace Add-on Manager SQLITE with JSON file project
Notes Will measure with about:telemetry on reference hardware as aggregate Telemetry includes both warm and cold starts and a variety of hardware confirgurations.

Replace Add-on Manager SQLITE with JSON file

Product impact [DESKTOP] [MOBILE]
Goal Goal: Reduce Add-on Manager impact on start-up time1 and runtime pauses2 by removing SQLITE database from XPI Provider and Add-on Repository and replacing with JSON3.

1Start-up time reduction by reducing the amount of I/O required before first paint.
2Runtime pause reduction by reducing I/O required during add-on up-to-date checks and updates, and making sure as much as possible is off main thread.
3New implementation will do no blocking I/O except minimal loading of required data during start-up.</sup>

Duration 6 weeks (approx week of May 27, 2013)
Team Irving Reid (lead), Felipe Gomes
Progress reports Irving Reid's blog, TeamStatus: Irving Reid, Felipe Gomes
Work bug 853388, bug 853389
Dependencies
Notes

Smooth Tab Animation

Product impact [DESKTOP]
Goal Reasonably1 smooth tabstrip animation on modern low-end AMD/Intel CPUs. The specific focus will be on use cases 1-8 defined below.
  1. New tab open of about:blank where other tabs are unaffected. (not common, this is our raw baseline)
  2. Tab close where other tabs are unaffected, and where the newly focused tab is empty. (also raw baseline)
  3. New tab open - with thumbnails preview - where other tabs are unaffected.
  4. Tab close where other tabs are unaffected, where the newly focused tab is heavy (e.g. GMail).
  • 5-8. Same as the above, when other tabs are affected (shrunk/expanded) - up to 10 changing tabs.

1The last 70% of the animation is not lower than 50fps.

Duration TBD
Team Avi Halachmi (lead), Tim Taubert
Progress reports Avi Halachmi's blog, TeamStatus: Avi Halachmi
Work bug 815354
Dependencies OMTC
Notes

Network Cache Rewrite

Product impact [DESKTOP] [MOBILE] [B2G]
Goal A cache that causes no main thread I/O jank (directly or indirectly via locks)1, and that avoids losing the entire cache during crashes or unclean shutdown.2

[1]Currently the cache causes jank (sometimes in excess of 1 second) via main thread waiting while cache thread holds lock and does I/O.
[2]Cache is currently thrown away unless clean shutdown. Cache loss rates per startup are 9% on windows desktop, 11% OSX, 22% Linux desktop, 25% metro. New design will keep all cache entries and detect corruption on a per-entry basis.

Duration Goal is to have new code in production by end of Q4 2013
Team Honza Bambas (lead), Michal Novotny, Jason Duell (manager)
Progress reports
Work bug 877301
Dependencies
Notes Cache rewrite project wiki page

Downloads API Rewrite

Product impact [DESKTOP]
Goal To improve responsiveness when downloads are started, by removing the main-thread I/O caused by access to "downloads.sqlite". The concrete goal is to ensure that SQL statements involving moz_downloads no longer appear in the "slow SQL" Telemetry dashboard.
Duration Late July / early August for reaching the initial goal in Nightly.

Probably another month or two (with lower bandwidth) for follow-ups.

Team Paolo Amadini (lead), Raymond Lee, Felipe Gomes
Progress reports firefox-dev mailing list, weekly updates tool.
Work bug 825588
Dependencies
Notes The project should include a follow-up time frame to accommodate any changes identified after Firefox for Desktop has migrated to the new API, as well as handle requests to facilitate other Mozilla products and add-ons to migrate to the new API.

On Hold

Shutdown

Product impact [DESKTOP]
Goal Ensure 95% of Firefox desktop instances shutdown in 3 seconds or less.
Duration TBD
Team Benoit Girard (lead)
Progress reports Benoit Girard's blog, TeamStatus: Benoit Girard
Work bug 819063
Dependencies
Notes
Hold reason Resource availability

Proposals

Project proposals should be listed on the perf etherpad.

Archive

Completed/terminated projects are listed in the project archive.

Tools

Communication

Communication Type Mechanism Audience
Announcements dev-platform list all
Meetings First Thursday of each month, 11am PT
  • Dial-in: conference# 99355
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 99355
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 99355
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 99355
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 99355
    • CA/Toronto: +1 416 848 3114, x92 Conf# 99355
    • UK/London: +44 (0)207 855 3000, x92 Conf# 99355
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 99355
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 99355
  • Vidyo: Performance
  • IRC: #perf
  • Agenda: https://etherpad.mozilla.org/perf
all
Meeting summaries this wiki all
Micro status TeamStatus devs
Weekly status Mozilla Status Board devs

Press & Blog Posts

Progress Reports

2013

People

list required competencies for people and, once defined, the people working on project. note that not all of these competencies will be required for every project

Project Champion
Program Management Lawrence Mandel
Product
Engineering Taras Glek, Vladan Djeric

References

Related Projects

Archive

Old Projects

Tools

Documentation and Presentations