|
|
| (96 intermediate revisions by 22 users not shown) |
| Line 1: |
Line 1: |
| =Performance=
| | The Firefox performance team focuses on improvements to the Gecko platform and Firefox across desktop and mobile. |
| Mozilla's performance program focuses on improvements to the Gecko platform and the Firefox Desktop, Firefox for Android, and Firefox OS products.
| | If you have performance-related questions, ask us in [https://chat.mozilla.org/#/room/#perf-help:mozilla.org #perf-help:mozilla.org on Matrix] and #perf-help on Slack. For general discussion, find us at [https://chat.mozilla.org/#/room/#perf:mozilla.org #perf:mozilla.org on Matrix]. |
|
| |
|
| ==Projects==
| | '''The team:''' |
| ===Active===
| | * Performance Engineering |
| ====<span style="color: green">"Cold" page load benchmark</span>====
| | * [[Performance/Tools|Performance Tools]] |
| {{PerfProject
| |
| |impact={{desktop}}
| |
| |team=Nathan Froyd (lead), Avi Halachmi
| |
| |duration=TBD
| |
| |goal=Create a reliable<sup>1</sup> Talos benchmark for 'cold' page load times.
| |
| <sup>1</sup><span style="font-size: 80%;">Reliable in this case refers to minimizing variability in the data between runs on the benchmark system.</span>
| |
| |reports=TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/froydnj Nathan Froyd], [http://teamstat.us/#show/irc.mozilla.org/perf/avih Avi Halachmi]
| |
| |work=
| |
| |dependencies=
| |
| |notes=This project will start by exploring viability of such a benchmark. If the benchmark turns out to be infeasible, we will document the results and move on to another project.
| |
| }}
| |
| ----
| |
|
| |
|
| ====<span style="color: green">Incremental Cycle Collection (CC)</span>====
| | Here are some related pages you may be interested in: |
| {{PerfProject
| | * [[Performance/Triage]] |
| |impact={{desktop}} {{mobile}} {{b2g}}
| | * [[Performance/Fenix]] |
| |team=Andrew McCreight (lead)
| |
| |duration=TBD
| |
| |goal=Implement incremental cycle collection to reduce<sup>1</sup> cycle collector pauses in the Firefox UI.
| |
| <sup>1</sup><span style="font-size: 80%;">Reduction in cycle collector pauses will be measured with the [http://mzl.la/XLsAoB CYCLE_COLLECTOR_FULL Telemetry probe]. The degree of reduction that can be achieved is currently unclear.</span>
| |
| |reports=TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/mccr8 Andrew McCreight]
| |
| |work={{bug|850065}}
| |
| |dependencies=
| |
| |notes=
| |
| }}
| |
| ----
| |
|
| |
|
| ====<span style="color: green">Keep JS-accessible APIs from blocking the main thread</span>==== | | ==Measuring & improving Firefox performance== |
| {{PerfProject
| |
| |impact={{desktop}} {{mobile}} {{b2g}}
| |
| |team=David Rajchenbach-Teller (lead), Paolo Amadini
| |
| |duration=TBD
| |
| |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.
| |
| |reports=TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/Yoric David Rajchenbach-Teller]
| |
| |work=[http://mzl.la/ZJaowA Bugzilla query]
| |
| |dependencies=
| |
| |notes=This project focuses on JS-accessible APIs in the context of Web Workers.
| |
| }}
| |
| ----
| |
|
| |
|
| ====<span style="color: green">Profiler Backend for Mobile</span>==== | | ===Write-ups=== |
| {{PerfProject
| | * [https://firefox-source-docs.mozilla.org/performance/ Firefox performance knowledge-base] |
| |impact={{mobile}} {{b2g}}
| | * [[Performance/Evaluating_Performance_of_New_Features|How to evaluate the performance of your new feature]] |
| |team=Julian Seward (lead), Benoit Girard, Mike Hommey
| | * Information on Talos automatic performance tests: |
| |duration=TBD
| | ** [[TestEngineering/Performance/Talos/RegressionBugsHandling|What to do when your check-in causes a Talos regression]] |
| |goal=Accurate<sup>1</sup>, crash-free, deadlock-free, low overhead<sup>2</sup> stack unwinding for the SPS profiler for Firefox for Android and Firefox OS.
| | ** [[TestEngineering/Performance/Sheriffing|Additional reading: How the Automation Team does performance sheriffing]] |
| <sup>[1]</sup><span style="font-size: 80%;">The correct sequence of code return addresses on the stack, ideally without the unwind terminating before it gets back to main().</span><br/>
| | * [[Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature|Avoid SQLite in your next Firefox feature]] |
| <sup>[2]</sup><span style="font-size: 80%;">Average unwind cost of 500 microseconds for a 30-frame backtrace on one core of a 1 GHz Cortex A9</span>
| |
| |reports=[https://blog.mozilla.org/jseward Julian Seward's blog], TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/sewardj Julian Seward], [http://teamstat.us/#show/irc.mozilla.org/perf/BenWa Benoit Girard], [http://teamstat.us/#show/irc.mozilla.org/perf/glandium Mike Hommey]
| |
| |work={{bug|863453}}
| |
| |dependencies=
| |
| |notes=May impact desktop Linux as well.
| |
| }}
| |
| ----
| |
|
| |
|
| ====<span style="color: green">Replace Addon Manager SQLITE with JSON file</span>==== | | ===Tools=== |
| {{PerfProject
| |
| |impact={{desktop}} {{mobile}}
| |
| |team=Irving Reid (lead), Felipe Gomes
| |
| |duration=6 weeks (approx week of May 27, 2013)
| |
| |goal=Goal: Reduce Addon Manager impact on start-up time<sup>1</sup> and runtime pauses<sup>2</sup> by removing SQLITE database from XPI Provider and Addon Repository and replacing with JSON<sup>3</sup>.
| |
| <sup>1</sup><span style="font-size: 80%;">Start-up time reduction by reducing the amount of I/O required before first paint.</span><br/>
| |
| <sup>2</sup><span style="font-size: 80%;">Runtime pause reduction by reducing I/O required during addon up-to-date checks and updates, and making sure as much as possible is off main thread.</span><br/>
| |
| <sup>3</sup><span style="font-size: 80%;">New implementation will do no blocking I/O except minimal loading of required data during start-up.</sup>
| |
| |reports=[http://www.controlledflight.ca/category/mozilla Irving Reid's blog], TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/irving Irving Reid], [http://teamstat.us/#show/irc.mozilla.org/perf/felipe Felipe Gomes]
| |
| |work= {{bug|853388}}, {{bug|853389}}
| |
| |dependencies=
| |
| |notes=
| |
| }}
| |
| ----
| |
|
| |
|
| ====<span style="color: green">Smooth Tab Animation</span>====
| | * [[Telemetry|Telemetry]]: |
| {{PerfProject
| | ** [http://telemetry.mozilla.org/ Telemetry dashboard] |
| |impact={{desktop}} | | ** [https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/start/adding-a-new-probe.html Adding a new Telemetry probe] |
| |team=Avi Halachmi (lead), Tim Taubert
| | * [https://profiler.firefox.com/ Firefox Profiler] |
| |duration=TBD
| | ** [https://firefox-source-docs.mozilla.org/performance/reporting_a_performance_problem.html Reporting a Performance problem] |
| |goal=
| |
| |reports=[http://avih.github.io/blog/categories/tabstrip/ Avi Halachmi's blog], TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/avih Avi Halachmi]
| |
| |work={{bug|815354}}
| |
| |dependencies=OMTC
| |
| |notes=
| |
| }}
| |
| ----
| |
| | |
| ===On Hold===
| |
| ====<span style="color: green">Shutdown</span>====
| |
| {{PerfProject
| |
| |impact={{desktop}}
| |
| |team=Benoit Girard (lead)
| |
| |duration=TBD
| |
| |goal=Ensure 95% of Firefox desktop instances shutdown in 3 seconds or less.
| |
| |reports=[http://benoitgirard.wordpress.com Benoit Girard's blog], TeamStatus: [http://teamstat.us/#show/irc.mozilla.org/perf/BenWa Benoit Girard]
| |
| |work={{bug|819063}}
| |
| |dependencies=
| |
| |notes=
| |
| }}
| |
| {{PerfProjectHold|Resource availability}}
| |
| ---- | |
| | |
| ===Proposals===
| |
| *Font chromehangs: daggett???
| |
| *Non-e10s Plugin Hangs:
| |
| | |
| ==Tools==
| |
| *[[Telemetry|Telemetry]]
| |
| * [https://github.com/mozilla/jydoop jydoop: Efficient and Testable hadoop map-reduce in Python] ([http://benjamin.smedbergs.us/blog/2013-04-09/introducing-jydoop-fast-and-sane-map-reduce/ Introduction from Benjamin Smedberg]) | |
| * [https://developer.mozilla.org/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler SPS Profiler] | |
| * [[Buildbot/Talos]] | | * [[Buildbot/Talos]] |
| | * [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/GTest#MozGTestBench MozGTestBench] |
| | ** Write low level microbenchmarks using [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/GTest#MozGTestBench GTest] |
| | * [[Using_XPerf| xperf]] |
| | ** [[Tracing VirtualAlloc With Xperf]] |
| | * [https://github.com/chutten/statuser Statuser]: Restartless Firefox extension for as-it-happens hang monitoring. |
|
| |
|
| ==Communication== | | ===Meetings=== |
| {| class="wikitable fullwidth-table"
| | ====Joy of Profiling==== |
| ! Communication Type !! Mechanism !! Audience
| | Do you have a profile that you don't understand? Are you having problem analyzing a profile? Do you want more eyes on this little profile of yours? |
| |-
| |
| | Announcements || [https://lists.mozilla.org/listinfo/dev-platform dev-platform] list || all
| |
| |-
| |
| | Meetings || First Thursday of each month, 1pm PT
| |
| {{conf|99355}}
| |
| * Vidyo: Performance
| |
| * IRC: [irc://irc.mozilla.org/perf #perf]
| |
| * Agenda: [https://etherpad.mozilla.org/perf https://etherpad.mozilla.org/perf]
| |
| || all
| |
| |-
| |
| | Meeting summaries || [[Performance | this wiki]] || all
| |
| |-
| |
| | Micro status || [http://teamstat.us/#browse/irc.mozilla.org/perf TeamStatus] || devs
| |
| |-
| |
| | Weekly status || [http://benjamin.smedbergs.us/weekly-updates.fcgi/ Mozilla Status Board] || devs
| |
| |}
| |
| | |
| ===Press & Blog Posts=== | |
| | |
|
| |
|
| ===Progress Reports ===
| | You have 2 options! |
| {| class="wikitable collapsible" style="width: 100%"
| |
| ! style="background-color: rgb(221, 221, 221);" colspan="2" | 2013 | |
| |-
| |
| |
| |
| * progress reports go here
| |
| |}
| |
|
| |
|
| ==People==
| | Option 1: join us on [https://matrix.to/#/#joy-of-profiling:mozilla.org the Joy of Profiling channel on Element]. |
| 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
| |
| {| class="wikitable fullwidth-table"
| |
| | Project Champion ||
| |
| |-
| |
| | Program Management || Lawrence Mandel
| |
| |-
| |
| | Product ||
| |
| |-
| |
| | Engineering || Taras Glek, Vladan Djeric
| |
| |-
| |
| |}
| |
|
| |
|
| ==References==
| | Option 2: join us in the Joy of Profiling meeting! |
| | |
| ===Related Projects===
| |
| * [[Performance/MemShrink|MemShrink]]
| |
| | |
| ==Archive==
| |
| ===Old Projects===
| |
| * [[Firefox/Projects/Mobile_Startup_Shrink|Mobile Startup Shrink]]
| |
| * [[Firefox/Projects/Startup_Time_Improvements|Startup Performance]]
| |
| * [[Firefox:FrontEndPerformance|Front-end Performance]] (i.e., responsiveness)
| |
| * [[Performance/Addons|Add-on Performance]]
| |
| * [[Performance/Snappy|Snappy]]
| |
| * [[Mobile/Performance|Mobile Performance Info]]
| |
| | |
| ===Tools===
| |
| * [[Codesighs]] - a tool which analyzes code and data size.
| |
| * [[Performance:Tools]]. For measuring performance. Tip o' the propeller-cap to [mailto:zuperdee@penguinpowered.com Daniel Roberts] (zuperdee@penguinpowered.com) for the pointers.
| |
| * [[Performance:Probes]]. Project to integrate a system of performance probes into Gecko.
| |
|
| |
|
| ===Documentation and Presentations===
| | * When: |
| * Code Footprint [[Performance:Footprint_Reduction_Techniques]] explains common bad patterns and how to correct them. | | ** Every first and third monday at 17:00 CET, 11am EST, 8am PST. |
| * [[Performance:Profiling_JuJu]]. Things you should know about doing profiling. Tips and tricks for some of the tools, and lots of other Good Things To Know. | | ** <del>Every second and fourth monday at 20:00 CET, 2pm EST, 11am PST.</del> Canceled for now, please contact us on the channel if you want to chat! |
| * [http://www.mozilla.org/performance/mac-performance.html Profiling and leak analysis] on the Mac. | | * Where: [https://mozilla.zoom.us/j/98769155293 Zoom ID 987 6915 5293] |
| * [[Performance:Footprint_Tools]]. Presentation on footprint tools | |
| * [[Performance:Startup]] [http://www.mozilla.org/performance/perf-intro/slide1.xml slides] Presentation on general performance tools
| |
| * [[Performance:Leak_Tools]]. Presentation on memory leaks detection tools
| |
| * [http://www.mozilla.org/performance/mac-performance.html Mac Performance Tools] Presentation on performance tools that work on Mac
| |