Allow the nursery to use less than a single chunk
Categories
(Core :: JavaScript: GC, enhancement, P1)
Tracking
()
People
(Reporter: pbone, Assigned: pbone)
References
(Blocks 2 open bugs)
Details
(Whiteboard: [overhead:noted])
Attachments
(6 files, 11 obsolete files)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
Updated•8 years ago
|
Updated•8 years ago
|
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Comment 2•7 years ago
|
||
Assignee | ||
Comment 3•7 years ago
|
||
Assignee | ||
Comment 4•7 years ago
|
||
Comment 5•7 years ago
|
||
Comment 6•7 years ago
|
||
Comment 7•7 years ago
|
||
Assignee | ||
Comment 8•7 years ago
|
||
Assignee | ||
Comment 9•7 years ago
|
||
Assignee | ||
Comment 10•7 years ago
|
||
Comment 11•7 years ago
|
||
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Comment 12•7 years ago
|
||
Assignee | ||
Comment 13•7 years ago
|
||
Assignee | ||
Comment 14•7 years ago
|
||
Assignee | ||
Comment 15•7 years ago
|
||
Updated•7 years ago
|
Comment 16•7 years ago
|
||
Comment 17•7 years ago
|
||
Comment 18•7 years ago
|
||
Assignee | ||
Comment 19•7 years ago
|
||
Assignee | ||
Comment 20•7 years ago
|
||
Comment 21•7 years ago
|
||
Comment 22•7 years ago
|
||
Assignee | ||
Comment 23•7 years ago
|
||
Assignee | ||
Comment 24•7 years ago
|
||
Assignee | ||
Comment 25•7 years ago
|
||
Assignee | ||
Comment 26•7 years ago
|
||
Assignee | ||
Comment 27•7 years ago
|
||
Assignee | ||
Comment 28•7 years ago
|
||
Assignee | ||
Comment 29•7 years ago
|
||
Assignee | ||
Comment 30•7 years ago
|
||
Assignee | ||
Comment 31•7 years ago
|
||
Comment 32•7 years ago
|
||
Comment 33•7 years ago
|
||
Assignee | ||
Comment 34•7 years ago
|
||
Comment 35•7 years ago
|
||
Assignee | ||
Comment 36•7 years ago
|
||
Hoping to land this on this train, its dependencies still have some regressions though.
Assignee | ||
Updated•7 years ago
|
Comment 37•7 years ago
|
||
Updated•7 years ago
|
Comment 38•7 years ago
|
||
(In reply to Paul Bone [:pbone] from comment #36)
I was
Assignee | ||
Comment 39•7 years ago
|
||
(In reply to Jon Coppeard (:jonco) from comment #37)
Comment on attachment 9024629 [details] [diff] [review]
Bug 1433007 - (Part 2) Store the nursery capacity in bytesReview of attachment 9024629 [details] [diff] [review]:
I was expecting you to post updated patches following my comments above.
But yes, hopefully we can get this in soon.
It was waiting on Bug 1497873 which should land soon.
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Comment 40•7 years ago
|
||
The latest patches might be regressing some things a slight amount, but it's hard to say. Meanwhile some of the js-bench benchmarks improve a lot. This is basically on par with what I learnt last time I did performance testing for this change. That said, once we follow up with Bug 1506733 we should see some good memory improvements.
Assignee | ||
Comment 41•7 years ago
|
||
Add capacity(), lazyCapacity() and usedSpace() functions to the Nursery.
Depends on D19344
Assignee | ||
Comment 42•7 years ago
|
||
To make the next change simpler we will store the nursery capacity in bytes
so it can be varied more granularly.
Depends on D19345
Assignee | ||
Comment 43•7 years ago
|
||
Depends on D19346
Assignee | ||
Comment 44•7 years ago
|
||
- Add a limit so that the nursery can collect after using a fraction of a
chunk. - Don't do idle time collection if the nursery is empty, even though the
free space may now be less than the free space threshold, collecting it
wont help. - Modify a test that expects a larger nursery.
Depends on D19347
Assignee | ||
Comment 45•7 years ago
|
||
Depends on D19348
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Updated•7 years ago
|
Assignee | ||
Comment 46•7 years ago
|
||
spaceToEnd() now works when the nursery is disabled.
Assignee | ||
Comment 47•7 years ago
|
||
Depends on D19473
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Comment 48•7 years ago
|
||
Comment on attachment 9042929 [details]
Bug 1527532 - Make initial nursery size smaller r=sfink!
Revision D19349 was moved to bug 1527532. Setting attachment 9042929 [details] to obsolete.
Comment 49•7 years ago
|
||
Comment 50•7 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/9dffda69dd2a
https://hg.mozilla.org/mozilla-central/rev/b2d8b986d422
https://hg.mozilla.org/mozilla-central/rev/54066b2f1a73
https://hg.mozilla.org/mozilla-central/rev/d6ef554aa023
https://hg.mozilla.org/mozilla-central/rev/cd3427c916a4
https://hg.mozilla.org/mozilla-central/rev/6cec67142105
Assignee | ||
Comment 51•6 years ago
|
||
Taking a look at the impact this has in telemetery.
There's a fairly obvious reduction in average nursery size,
Which is great, that's the memory savings we can expect to gain once we're able to decommit the unused memory and some tweaks to poisoning.
Looks like a huge impact on the long end of pauses for nursery collection, bringing the 95th percentile from ~250us to ~60us!
The nursery is collected more often, meaning this won't affect throughput (we knew it wouldn't). I think I can see that in some of the increased sample rate but that's always hard to know.
Comment 52•6 years ago
|
||
Big AWSY improvements noticed! \0/
Half of the JS <platform> improvements can be attributed to bug 1527742 also.
== Change summary for alert #19393 (as of Fri, 15 Feb 2019 06:35:28 GMT) ==
Improvements:
21% Base Content JS windows7-32 opt stylo 4,162,016.00 -> 3,302,251.33
21% Base Content JS windows7-32 pgo stylo 4,162,040.00 -> 3,306,343.33
17% Base Content JS linux64-qr opt stylo 5,034,618.00 -> 4,172,972.67
17% Base Content JS linux64 opt stylo 5,034,610.00 -> 4,172,976.67
17% Base Content JS windows10-64 opt stylo 5,099,952.00 -> 4,238,681.33
17% Base Content JS windows10-64 pgo stylo 5,099,965.33 -> 4,244,328.00
9% Base Content Explicit windows7-32 opt stylo 8,603,648.00 -> 7,823,189.33
8% Base Content Explicit windows10-64 pgo stylo 11,353,770.67 -> 10,485,589.33
8% Base Content Explicit windows10-64 opt stylo 11,256,490.67 -> 10,402,474.67
7% JS windows7-32 pgo stylo 86,027,087.64 -> 80,349,790.95
7% JS windows7-32 opt stylo 85,982,210.08 -> 80,325,465.84
7% JS linux64-qr opt stylo 113,887,106.78 -> 106,444,803.28
6% JS linux64 opt stylo 113,458,706.47 -> 106,234,537.48
6% JS windows10-64-qr opt stylo 114,480,464.48 -> 107,359,956.88
6% JS windows10-64 opt stylo 114,542,737.86 -> 107,509,563.50
6% JS osx-10-10 opt stylo 114,384,030.41 -> 107,629,067.06
5% Base Content Explicit linux64 opt stylo 13,764,608.00 -> 13,023,232.00
5% Base Content Explicit linux64-qr opt stylo 13,760,170.67 -> 13,032,448.00
3% Explicit Memory linux64 opt stylo 368,888,459.00 -> 357,057,764.05
3% Explicit Memory windows7-32 pgo stylo 272,025,153.61 -> 264,530,747.47
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=19393
Assignee | ||
Comment 53•6 years ago
|
||
w00t!
(In reply to Ionuț Goldan [:igoldan], Performance Sheriffing from comment #52)
Big AWSY improvements noticed! \0/
Half of the JS <platform> improvements can be attributed to bug 1527742 also.== Change summary for alert #19393 (as of Fri, 15 Feb 2019 06:35:28 GMT) ==
Improvements:
21% Base Content JS windows7-32 opt stylo 4,162,016.00 -> 3,302,251.33
21% Base Content JS windows7-32 pgo stylo 4,162,040.00 -> 3,306,343.33
17% Base Content JS linux64-qr opt stylo 5,034,618.00 -> 4,172,972.67
17% Base Content JS linux64 opt stylo 5,034,610.00 -> 4,172,976.67
17% Base Content JS windows10-64 opt stylo 5,099,952.00 -> 4,238,681.33
17% Base Content JS windows10-64 pgo stylo 5,099,965.33 -> 4,244,328.00
9% Base Content Explicit windows7-32 opt stylo 8,603,648.00 -> 7,823,189.33
8% Base Content Explicit windows10-64 pgo stylo 11,353,770.67 -> 10,485,589.33
8% Base Content Explicit windows10-64 opt stylo 11,256,490.67 -> 10,402,474.67
These ones could be due to this bug. But I wasn't expecting them because this bug makes no attempt to change poisoning behviour so I dodn't expect resident memory to change.
7% JS windows7-32 pgo stylo 86,027,087.64 -> 80,349,790.95
7% JS windows7-32 opt stylo 85,982,210.08 -> 80,325,465.84
7% JS linux64-qr opt stylo 113,887,106.78 -> 106,444,803.28
6% JS linux64 opt stylo 113,458,706.47 -> 106,234,537.48
6% JS windows10-64-qr opt stylo 114,480,464.48 -> 107,359,956.88
6% JS windows10-64 opt stylo 114,542,737.86 -> 107,509,563.50
6% JS osx-10-10 opt stylo 114,384,030.41 -> 107,629,067.06
5% Base Content Explicit linux64 opt stylo 13,764,608.00 -> 13,023,232.00
5% Base Content Explicit linux64-qr opt stylo 13,760,170.67 -> 13,032,448.00
3% Explicit Memory linux64 opt stylo 368,888,459.00 -> 357,057,764.05
3% Explicit Memory windows7-32 pgo stylo 272,025,153.61 -> 264,530,747.47
The majority of the difference in this tests cannot possibly be from this bug. I can only take credit for up to 1MB. This change won't affect nurseries larger than that.
Assignee | ||
Comment 54•6 years ago
|
||
Here are some things that did change due to this:
https://groups.google.com/forum/#!topic/mozilla.dev.telemetry-alerts/e5aqhAro9ew
Comment 55•6 years ago
|
||
(In reply to Paul Bone [:pbone] from comment #53)
w00t!
(In reply to Ionuț Goldan [:igoldan], Performance Sheriffing from comment #52)
Big AWSY improvements noticed! \0/
Half of the JS <platform> improvements can be attributed to bug 1527742 also.== Change summary for alert #19393 (as of Fri, 15 Feb 2019 06:35:28 GMT) ==
Improvements:
21% Base Content JS windows7-32 opt stylo 4,162,016.00 -> 3,302,251.33
21% Base Content JS windows7-32 pgo stylo 4,162,040.00 -> 3,306,343.33
17% Base Content JS linux64-qr opt stylo 5,034,618.00 -> 4,172,972.67
17% Base Content JS linux64 opt stylo 5,034,610.00 -> 4,172,976.67
17% Base Content JS windows10-64 opt stylo 5,099,952.00 -> 4,238,681.33
17% Base Content JS windows10-64 pgo stylo 5,099,965.33 -> 4,244,328.00
9% Base Content Explicit windows7-32 opt stylo 8,603,648.00 -> 7,823,189.33
8% Base Content Explicit windows10-64 pgo stylo 11,353,770.67 -> 10,485,589.33
8% Base Content Explicit windows10-64 opt stylo 11,256,490.67 -> 10,402,474.67These ones could be due to this bug. But I wasn't expecting them because this bug makes no attempt to change poisoning behviour so I dodn't expect resident memory to change.
We didn't see an improvement in resident so that makes sense.
7% JS windows7-32 pgo stylo 86,027,087.64 -> 80,349,790.95
7% JS windows7-32 opt stylo 85,982,210.08 -> 80,325,465.84
7% JS linux64-qr opt stylo 113,887,106.78 -> 106,444,803.28
6% JS linux64 opt stylo 113,458,706.47 -> 106,234,537.48
6% JS windows10-64-qr opt stylo 114,480,464.48 -> 107,359,956.88
6% JS windows10-64 opt stylo 114,542,737.86 -> 107,509,563.50
6% JS osx-10-10 opt stylo 114,384,030.41 -> 107,629,067.06
5% Base Content Explicit linux64 opt stylo 13,764,608.00 -> 13,023,232.00
5% Base Content Explicit linux64-qr opt stylo 13,760,170.67 -> 13,032,448.00
3% Explicit Memory linux64 opt stylo 368,888,459.00 -> 357,057,764.05
3% Explicit Memory windows7-32 pgo stylo 272,025,153.61 -> 264,530,747.47The majority of the difference in this tests cannot possibly be from this bug. I can only take credit for up to 1MB. This change won't affect nurseries larger than that.
These are the "big" AWSY numbers, so summed across 10ish processes, but also a geometric average of several subtests. The biggest win was something like 54MB for After tabs open [+30s, forced GC] (on windows at least) which does seem to imply bug 1527742.
Assignee | ||
Comment 56•6 years ago
|
||
Some perfherder stuff is definitely due to this change. Thanks erahm.
Comment 57•6 years ago
|
||
== Change summary for alert #19384 (as of Fri, 15 Feb 2019 02:33:11 GMT) ==
Improvements:
17% Base Content JS osx-10-10 opt stylo 5,034,073.33 -> 4,179,684.00
17% Base Content JS windows10-64-qr opt stylo 5,099,260.00 -> 4,244,212.00
11% Base Content Explicit windows7-32 pgo stylo 8,843,946.67 -> 7,903,061.33
7% Base Content Explicit windows10-64-qr opt stylo 11,213,312.00 -> 10,388,480.00
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=19384
Assignee | ||
Comment 58•6 years ago
|
||
So Bug 1528867 added some new telemetry: https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&end_date=2019-02-23&include_spill=0&keys=__none__!__none__!__none__&max_channel_version=nightly%252F67&measure=GC_NURSERY_BYTES_2&min_channel_version=nightly%252F64&processType=*&product=Firefox&sanitize=1&sort_by_value=0&sort_keys=submissions&start_date=2019-02-22&table=0&trim=1&use_submission_date=0
What's interesting is that for the vast majority of Firefox users this is sitting right on the minimum nursery size. Meaning this and the following patches really will definitly have an impact!
Updated•3 years ago
|
Description
•