Performance
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
"Cold" page load benchmark
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(). |
| 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. |
| 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. |
| 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.
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. |
| 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 |
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
- Telemetry
- jydoop: Efficient and Testable hadoop map-reduce in Python (Introduction from Benjamin Smedberg)
- SPS Profiler
- Buildbot/Talos
Communication
| Communication Type | Mechanism | Audience |
|---|---|---|
| Announcements | dev-platform list | all |
| Meetings | First Thursday of each month, 1pm PT
|
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
- Mobile Startup Shrink
- Startup Performance
- Front-end Performance (i.e., responsiveness)
- Add-on Performance
- Snappy
- Mobile Performance Info
Tools
- Codesighs - a tool which analyzes code and data size.
- Performance:Tools. For measuring performance. Tip o' the propeller-cap to Daniel Roberts (zuperdee@penguinpowered.com) for the pointers.
- Performance:Probes. Project to integrate a system of performance probes into Gecko.
Documentation and Presentations
- Code Footprint Performance:Footprint_Reduction_Techniques explains common bad patterns and how to correct them.
- 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.
- Profiling and leak analysis on the Mac.
- Performance:Footprint_Tools. Presentation on footprint tools
- Performance:Startup slides Presentation on general performance tools
- Performance:Leak_Tools. Presentation on memory leaks detection tools
- Mac Performance Tools Presentation on performance tools that work on Mac