Electrolysis/Multiple content processes: Difference between revisions
(post London update) |
(current work + future plans) |
||
(47 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
= | = Overview = | ||
After e10s is enabled for all users, the next step was to introduce multiple content processes. The goal is to bring out the most from the multi process architecture we introduced with e10s, gain performance where it's possible and minimize the impact of content process crashes. The challenge is to achieve this without sacrificing the advantage we currently have in memory usage compared to our competitors. | |||
The first step was to enable 4 content processes to all users without non WebExtensions based add-ons. Before increasing the number of maximum processes the next step is further optimization. Memory consumption and content process startup time optimization, memory balancing among content processes and user machine based customization based on performance statistics. | |||
One explicit non-goal of this project is to nest content processes for e.g. iframes. There is work underway to do that in {{bug|1277066}} in parallel to this project. | |||
= Status = | |||
{| class="wikitable" | |||
|- | |||
! Version !! Status | |||
|- | |||
| 56 || Maximum 4 content processes for all e10s eligible users without any non WebExtension add-ons | |||
|- | |||
| 57 || Maximum 4 content processes for all e10s eligible users | |||
|- | |||
| 58 || No longer relying on the system add-on, prelaunching content process in the background | |||
|} | |||
== Memory management == | |||
* [http://www.erahm.org/2016/02/11/memory-usage-of-firefox-with-e10s-enabled/ Memory cost of a content process] - relatively high | * [http://www.erahm.org/2016/02/11/memory-usage-of-firefox-with-e10s-enabled/ Memory cost of a content process] - relatively high | ||
* [http://www.erahm.org/2016/02/12/are-they-slim-yet/ Memory usage of e10s compared to other browsers] - we're not the worst offender | * [http://www.erahm.org/2016/02/12/are-they-slim-yet/ Memory usage of e10s compared to other browsers] - we're not the worst offender | ||
* [https://bugzilla.mozilla.org/show_bug.cgi?id=1381961 Enabled shared global for JSMs] | |||
== Content process startup time == | |||
* [https://treeherder.mozilla.org/perf.html#/graphs?series=mozilla-central,1559690,1,1&series=mozilla-central,1559693,1,1&series=mozilla-central,1559696,1,1&series=mozilla-central,1559697,1,1&highlightedRevisions=8a3b8491838e ~300ms] - on most platforms (the OSX issue is investigated under: [https://bugzilla.mozilla.org/show_bug.cgi?id=1404309 bug 1404309]) | |||
* The preallocated process manager is enabled from 58 | |||
=== | = Current work = | ||
{| class="wikitable" | |||
|- | |||
! Metrics !! | |||
|- | |||
| Talos test to measure parallel page loads || {{Bug|1409002}} | |||
|- | |||
| Telemetry probe to measure background process activity || {{Bug|1388280}} | |||
|- | |||
! Tuning !! | |||
|- | |||
| Process selection based on memory footprint || {{Bug|1388277}} | |||
|- | |||
| Restarting troubled processes || {{Bug|1374353}} | |||
|- | |||
| Selecting max content process count based on users machine || ... | |||
|} | |||
= Future plans = | |||
{| class="wikitable" | {| class="wikitable" | ||
! Memshrink !! | |||
|- | |- | ||
| Compressing strings in JSMs || ... | |||
|- | |- | ||
| | | Reduce resources loaded in the CP || ... | ||
| | |||
| | |||
|- | |- | ||
| Reduce static tables || ... | |||
|- | |||
| Reduce or improve per process caches || ... | |||
|- | |||
! Long term !! | |||
|- | |||
| Suspending / Freezing background tabs and processes || ... | |||
|- | |||
| Battery life saving mode || ... | |||
|- | |||
| Sharing scripts || ... | |||
|} | |} | ||
= Bug tracking = | |||
== Links | == Triage == | ||
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=13712205&resolution=---&status_whiteboard_type=anywordssubstr&query_format=advanced&status_whiteboard=e10s-multi%3AM%3F%2C%20e10s-multi%3A%3F Triage list] ('e10s-multi:?' in whiteboard) | |||
== Priorities == | |||
* [https://bugzilla.mozilla.org/buglist.cgi?priority=P1&list_id=13845618&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=e10s-multi%3A%2B&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED P1] | |||
* [https://bugzilla.mozilla.org/buglist.cgi?list_id=13845621&status_whiteboard_type=allwordssubstr&status_whiteboard=e10s-multi%3A%2B&priority=P2&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED P2] | |||
* [https://bugzilla.mozilla.org/buglist.cgi?priority=P3&list_id=13845618&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=e10s-multi%3A%2B&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED P3] | |||
= Links = | |||
* [https://docs.google.com/a/mozilla.com/document/d/14E5ERudaZrx-qcOLttXGkV6DgHIyp3h9IZoqnhuO7X8/edit Process Model] (2012) | * [https://docs.google.com/a/mozilla.com/document/d/14E5ERudaZrx-qcOLttXGkV6DgHIyp3h9IZoqnhuO7X8/edit Process Model] (2012) | ||
* Recent [https://groups.google.com/forum/#!searchin/mozilla.dev.platform/e10s$20multiple$20processes/mozilla.dev.platform/NHIjpGvOelE/_A9IJWsP0fUJ dev.platform] discussion | * Recent [https://groups.google.com/forum/#!searchin/mozilla.dev.platform/e10s$20multiple$20processes/mozilla.dev.platform/NHIjpGvOelE/_A9IJWsP0fUJ dev.platform] discussion | ||
= Teams = | |||
TBD |
Latest revision as of 12:46, 6 November 2017
Overview
After e10s is enabled for all users, the next step was to introduce multiple content processes. The goal is to bring out the most from the multi process architecture we introduced with e10s, gain performance where it's possible and minimize the impact of content process crashes. The challenge is to achieve this without sacrificing the advantage we currently have in memory usage compared to our competitors.
The first step was to enable 4 content processes to all users without non WebExtensions based add-ons. Before increasing the number of maximum processes the next step is further optimization. Memory consumption and content process startup time optimization, memory balancing among content processes and user machine based customization based on performance statistics.
One explicit non-goal of this project is to nest content processes for e.g. iframes. There is work underway to do that in bug 1277066 in parallel to this project.
Status
Version | Status |
---|---|
56 | Maximum 4 content processes for all e10s eligible users without any non WebExtension add-ons |
57 | Maximum 4 content processes for all e10s eligible users |
58 | No longer relying on the system add-on, prelaunching content process in the background |
Memory management
- Memory cost of a content process - relatively high
- Memory usage of e10s compared to other browsers - we're not the worst offender
- Enabled shared global for JSMs
Content process startup time
- ~300ms - on most platforms (the OSX issue is investigated under: bug 1404309)
- The preallocated process manager is enabled from 58
Current work
Metrics | |
---|---|
Talos test to measure parallel page loads | bug 1409002 |
Telemetry probe to measure background process activity | bug 1388280 |
Tuning | |
Process selection based on memory footprint | bug 1388277 |
Restarting troubled processes | bug 1374353 |
Selecting max content process count based on users machine | ... |
Future plans
Memshrink | |
---|---|
Compressing strings in JSMs | ... |
Reduce resources loaded in the CP | ... |
Reduce static tables | ... |
Reduce or improve per process caches | ... |
Long term | |
Suspending / Freezing background tabs and processes | ... |
Battery life saving mode | ... |
Sharing scripts | ... |
Bug tracking
Triage
- Triage list ('e10s-multi:?' in whiteboard)
Priorities
Links
- Process Model (2012)
- Recent dev.platform discussion
Teams
TBD