|
|
| (29 intermediate revisions by 12 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 desktop performance team focuses on improvements to the Gecko platform and desktop Firefox.
| | 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]. |
| You can find us on the #perf channel of irc.mozilla.org or email perf@mozilla.com
| |
|
| |
|
| '''The team:''' | | '''The team:''' |
| * Vladan Djeric, :vladan on IRC, [http://blog.mozilla.org/vdjeric/ blog] | | * Performance Engineering |
| * Aaron Klotz :aklotz, [http://dblohm7.ca/ blog] | | * [[Performance/Tools|Performance Tools]] |
| * Roberto Vitillo :rvitillo, [http://ravitillo.wordpress.com/category/mozilla/ blog]
| |
| * Avi Halachmi :avih, [http://avih.github.io/ blog]
| |
| * David Teller :Yoric, [http://dutherenverseauborddelatable.wordpress.com/ blog]
| |
| * David Major :dmajor
| |
|
| |
|
| ==Current Projects==
| | Here are some related pages you may be interested in: |
| | | * [[Performance/Triage]] |
| * Weekly status reports: [http://benjamin.smedbergs.us/weekly-updates.fcgi/project/perf Mozilla Status Board]
| | * [[Performance/Fenix]] |
| | |
| * In Q2, half the team will be working on [[Firefox/Content_Performance_Program|improving web content performance.]] | |
| * [https://wiki.mozilla.org/Platform/2015-Q1-Goals#Perf Our Q1 2015 goals]
| |
| * [https://wiki.mozilla.org/Platform/2014-Q4-Goals#Perf Q4 2014 goals]
| |
| * [https://wiki.mozilla.org/Platform/2014-Q3-Goals#Perf Q3 2014 goals] | |
| * [https://wiki.mozilla.org/Platform/2014-Q2-Goals#Perf Q2 2014 goals]
| |
| * [https://wiki.mozilla.org/Platform/2014-Q1-Goals#Perf Q1 2014 goals]
| |
|
| |
|
| ==Measuring & improving Firefox performance== | | ==Measuring & improving Firefox performance== |
|
| |
|
| ===Write-ups=== | | ===Write-ups=== |
| * [https://developer.mozilla.org/en-US/docs/Mozilla/Performance| Firefox performance knowledge-base] | | * [https://firefox-source-docs.mozilla.org/performance/ Firefox performance knowledge-base] |
| * [[Performance/Evaluating_Performance_of_New_Features|How to evaluate the performance of your new feature]] | | * [[Performance/Evaluating_Performance_of_New_Features|How to evaluate the performance of your new feature]] |
| * Information on Talos automatic performance tests: | | * Information on Talos automatic performance tests: |
| ** [[Buildbot/Talos/RegressionBugsHandling|What to do when your check-in causes a Talos regression]] | | ** [[TestEngineering/Performance/Talos/RegressionBugsHandling|What to do when your check-in causes a Talos regression]] |
| ** [[Buildbot/Talos/Sheriffing|Additional reading: How the Automation Team does performance sheriffing]] | | ** [[TestEngineering/Performance/Sheriffing|Additional reading: How the Automation Team does performance sheriffing]] |
| * [[Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature|Avoid SQLite in your next Firefox feature]] | | * [[Performance/Avoid_SQLite_In_Your_Next_Firefox_Feature|Avoid SQLite in your next Firefox feature]] |
|
| |
|
| Line 36: |
Line 24: |
| * [[Telemetry|Telemetry]]: | | * [[Telemetry|Telemetry]]: |
| ** [http://telemetry.mozilla.org/ Telemetry dashboard] | | ** [http://telemetry.mozilla.org/ Telemetry dashboard] |
| ** [https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Adding_a_new_Telemetry_probe Adding a new Telemetry probe] | | ** [https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/start/adding-a-new-probe.html Adding a new Telemetry probe] |
| ** The "More Dashboards" sidebar in the [http://telemetry.mozilla.org/ main dash] has links to all our dashes
| | * [https://profiler.firefox.com/ Firefox Profiler] |
| ** [http://mozilla.github.io/cerberus/dashboard/ Cerberus]: Automated regression detection for Telemetry
| | ** [https://firefox-source-docs.mozilla.org/performance/reporting_a_performance_problem.html Reporting a Performance problem] |
| *** Set the "alert_mails" field in your histogram declaration to get [https://groups.google.com/forum/#!forum/mozilla.dev.telemetry-alerts automatic email notifications] of regressions
| |
| ** You can do custom Telemetry analyses using [http://mreid-moz.github.io/blog/2013/11/06/current-state-of-telemetry-analysis/ MapReduce] or [http://robertovitillo.com/2015/01/16/next-gen-data-analysis-framework-for-telemetry/ Spark]
| |
| * [https://developer.mozilla.org/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler SPS Gecko Profiler] | |
| ** [https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem Reporting a Performance problem] | |
| * [[Buildbot/Talos]] | | * [[Buildbot/Talos]] |
| ** [http://graphs.mozilla.org graphs.mozilla.org]: for visualizing past Talos test results
| | * [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/GTest#MozGTestBench MozGTestBench] |
| ** Joel Maher maintains a [http://alertmanager.allizom.org:8080/alerts.html?showAll=1 dashboard] of current Talos regressions & improvements | | ** Write low level microbenchmarks using [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/GTest#MozGTestBench GTest] |
| * [[Using_XPerf| xperf]] | | * [[Using_XPerf| xperf]] |
| ** [[Tracing VirtualAlloc With Xperf]] | | ** [[Tracing VirtualAlloc With Xperf]] |
| | * [https://github.com/chutten/statuser Statuser]: Restartless Firefox extension for as-it-happens hang monitoring. |
|
| |
|
| ==Terminology== | | ===Meetings=== |
| | | ====Joy of Profiling==== |
| ; Main Thread : A browser generally runs all its things sequentially on a single thread, which is typically referred to as '''the main thread'''. This means that Javascript can change stuff which affects the screen, and Javascript code will not continue before the screen reflects the requested changes, or other changes. This is a big bottleneck since it's hard to run things in parallel.
| | 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? |
| | |
| ; [http://www.techhive.com/article/229024/geek101_vsync.html v-sync] : Vertical synchronization to the monitor's ''beam reset''. It's used at contexts of animations, where in order to achieve 100% smoothness of animation, each frame should be sent to the display such that it matches the v-sync timing.
| |
| | |
| ; [https://wiki.mozilla.org/Platform/GFX/OffMainThreadCompositing OMTC] : Off main thread composition. When rendering graphics in Firefox, this means that the main thread just ''prepares'' the rendering for each frame, but then a heavy chunk of the rendering (''composition'') happens on a different thread. This allows to have more free time on the main thread, which in turn means it can run more Javascript stuff on each frame. BenWa's [http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/ blog post] explains OMTC in details.
| |
| | |
| ; [https://wiki.mozilla.org/Platform/GFX/APZ APZ] : Async Pan Zoom (Controller) - technique which browsers sometimes use to zoom and/or pan (move the page up/down/left/right) on a thread which isn't the main thread, therefore allowing longer Javascript calculations on the main thread without affecting the responsiveness for certain operations (specifically - pan and zoom).
| |
| | |
| ; [https://wiki.mozilla.org/Project_Silk Project Silk] : Project to unify and improve animation in Firefox by using global v-sync timing. Before silk, the timing was done at the "refresh driver" using timeouts, where on each such iteration it would run everything the browser needs to run for a single frame. With silk, there's an external module which generates events synchronized to v-sync, which hopefully improves animation smoothness. Check [http://www.masonchang.com/blog/2015/1/22/project-silk this mchang's blog post] for an overview of Project Silk and [https://github.com/changm/SilkDocs/blob/master/silk.md this document] for Project Silk architecture.
| |
| | |
| | |
| | |
| ==Archive (Delete soon) ==
| |
|
| |
|
| Old progress reports:
| | You have 2 options! |
| * June 2014 [[Performance/2014-12-06|Meeting Minutes]], [[Performance/Report-2014-06|Report]]
| |
| * February 2014 [[Performance/2014-02-13|Meeting Minutes]], [[Performance/Report-2014-02|Report]]
| |
| * December 2013 [[Performance/2013-12-05|Meeting Minutes]], [[Performance/Report-2013-12|Report]]
| |
| * November 2013 [[Performance/2013-11-07|Meeting Minutes]], [[Performance/Report-2013-11|Report]]
| |
| * September 2013 [[Performance/2013-09-12|Meeting Minutes]], [[Performance/Report-2013-09|Report]]
| |
| * August 2013 [[Performance/2013-08-01|Meeting Minutes]], [[Performance/Report-2013-08|Report]]
| |
| * [[Performance/2013-07-11|July 2013 Meeting Minutes]]
| |
| * [[Performance/2013-06-06|June 2013 Meeting Minutes]]
| |
| * [[Performance/2013-05-02|May 2013 Meeting Minutes]]
| |
|
| |
|
| Old Projects
| | Option 1: join us on [https://matrix.to/#/#joy-of-profiling:mozilla.org the Joy of Profiling channel on Element]. |
| * [[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:
| | Option 2: join us in the Joy of Profiling meeting! |
| * [[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.
| |
|
| |
|
| Old 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
| |