Changes

Jump to: navigation, search

Project Fission/Memory

4,910 bytes added, 21:38, 21 September 2018
Initial draft of fission memory project page.
== Goals ==

Due to the drastic increase in the number of processes required to support [[Project Fission]] we must focus on reducing the per process overhead of each content process. As a baseline we are working on reducing the amount of memory used to load an about:blank page.

== Metrics ==
=== Binary Section Sizes ===
Any writable data will increase the overhead of each content process, this is particularly problematic on Linux and OSX. This data is tracked via ''section_size'' entries in ''build_metrics'' in perfherder.

* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1687703,1,2&series=mozilla-central,1687701,1,2&series=mozilla-central,1687702,1,2 Linux]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1700609,1,2&series=mozilla-central,1700607,1,2 Windows]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1700459,1,2&series=mozilla-central,1700460,1,2&series=mozilla-central,1700461,1,2 OSX]

=== Are We Slim Yet Tests ===
The primary tests used by [[Performance/MemShrink|MemShrink]] are the Are We Slim Yet (AWSY) suite. Metrics are available in perfherder under the '''awsy''' framework.

==== AWSY (sb) ====
Our main focus for Fission is the simpler about:blank ''SY-e10s(ab)'' test. This gives a less noisy baseline metric that allows us to focus on incremental improvements. This is essentially our ''best case'' metric.

'''Resident Unique''' is our main measurement of success. It's the total amount of memory that the content process is using that's not shared with other processes:
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1684862,1,4 Resident Unique Memory - Linux]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1685133,1,4 Resident Unique Memory - Windows]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1684846,1,4 Resident Unique Memory - OSX]

'''JavaScript''' is memory used by our JavaScript engine both for it's internal state and any loaded scripts. It is one of the largest contributors to memory overhead, has very little noise, and has been a focus for memory reduction:
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1684866,1,4 JavaScript Memory - Linux]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1685137,1,4 JavaScript Memory - Windows]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1684850,1,4 JavaScript Memory - OSX]

==== AWSY (sy) ====
The original test suite, ''SY-e10s(sy)'', is a stress test that loads 100 pages into 30 tabs 3 times and measures memory at various points and is useful for detecting regressions in startup memory usage, longer term leaks, leaked windows, etc. This is essentially our ''worst case'' metric.

'''after tabs opened''' is one of several data points gathered, it is the most relevant to this project:
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1651963,1,4 Resident Memory - Linux]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1653935,1,4 Resident Memory - Windows]
* [https://treeherder.mozilla.org/perf.html#/graphs?timerange=31536000&series=mozilla-central,1651894,1,4 Resident Memory - OSX]


== Meetings ==
Meetings happen every Tuesday at 12:30pm Pacific time ([http://arewemeetingyet.com/Los%20Angeles/2018-09-18/12:30/w/Fission%20MemShrink%20Meeting countdown in your timezone])
{{conf|8394}}
* Vidyo: MemShrink
* IRC: [irc://irc.mozilla.org/memshrink #memshrink]

== Bug Tracking ==

'''Tracking:''' {{Bug|1436250}}

=== Triage ===
We use the '''[overhead]''' whiteboard tag to flag items for triage. Additionally any bug in the {{Bug|1436250}} dependency tree is generally triaged. The triage process attempts estimate the impact a bug will have on reducing the overhead of a content process. If we think a bug will reduce per process memory usage by 30KB then update the tag with the expected win: '''[overhead:30K]'''. We try to use a reasonable guess for this value, it doesn't need to be exact.

=== Progress ===
Measurements from the beginning of each quarter.

==== Linux ====
{| class="wikitable"
|-
! Quarter !! Resident Unique !! JS
|-
| Q2 2018 || 34.3MB || 8.5MB
|-
| Q3 2018 || 33.6MB || 8.0MB
|-
| Q4 2018 || 20.7MB || 5.3MB
|}

==== Windows ====
{| class="wikitable"
|-
! Quarter !! Resident Unique !! JS
|-
| Q2 2018 || 21.5MB || 8.5MB
|-
| Q3 2018 || 20.8MB || 8.0MB
|-
| Q4 2018 || 15.0MB || 5.3MB
|}

==== OSX ====
{| class="wikitable"
|-
! Quarter !! Resident Unique !! JS
|-
| Q2 2018 || 32.7MB || 8.5MB
|-
| Q3 2018 || 31.7MB || 8.0MB
|-
| Q4 2018 || 21.4MB || 5.3MB
|}
Confirm
43
edits

Navigation menu