Open Bug 1410123 Opened 9 years ago Updated 2 years ago

Atoms bitmap is only updated when we collect the atoms zone

Categories

(Core :: JavaScript: GC, defect, P3)

55 Branch
defect

Tracking

()

REOPENED
Tracking Status
firefox58 --- wontfix

People

(Reporter: jonco, Assigned: jonco)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

As per bug 1324002 comment 28, we should udpate the atoms bitmaps in every collection to make the approximations more accurate and enable us to free more unused atoms sooner when collect the atoms zone in a zone GC.
Priority: -- → P3
Here's a patch that always collects the atoms zone, but only sweeps it if it was actually scheduled. What this lets us do is to update the atoms bitmaps for collected zones in every GC, even if we didn't schedule the atoms zone. The per-zone atoms bitmaps are an overapproximation to the set of atoms referenced from that zone, and this update step allows us to refine this with information about which atoms were actually marked. Then when we later sweep the atoms zone this is taken into account and potentially lets us free more atoms.
Attachment #8921531 - Flags: review?(sphink)
Comment on attachment 8921531 [details] [diff] [review] bug1410123-always-update-atoms-bitmap Review of attachment 8921531 [details] [diff] [review]: ----------------------------------------------------------------- The patch seems fine, but for my understanding, if you have multiple sweep groups which one of them is the atoms zone in? The first one, I guess?
Attachment #8921531 - Flags: review?(sphink) → review+
(In reply to Steve Fink [:sfink] [:s:] from comment #2) If the atoms zone is being collected it will be the single zone in the last group, since every zone will adds edge to the atoms zone in Zone::findOutgoingEdges().
Pushed by jcoppeard@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/2c36f41ed77c Update atom marking bitmaps on every collection r=sfink
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
Status: RESOLVED → REOPENED
Flags: needinfo?(jcoppeard)
Resolution: FIXED → ---
Target Milestone: mozilla58 → ---
When this first landed, we noticed these performance regressions: == Change summary for alert #10164 (as of October 25 2017 09:31 UTC) == Regressions: 27% tp6_youtube summary windows7-32 opt e10s 296.73 -> 375.79 23% tp6_youtube_heavy summary windows10-64 opt e10s274.88 -> 338.50 22% tp6_youtube_heavy summary windows7-32 opt e10s288.88 -> 351.69 For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=10164
Preliminary results after the backout show that the regression was removed.
I confirm the backout canceled the perf regressions: == Change summary for alert #10190 (as of October 26 2017 10:48 UTC) == Improvements: 22% tp6_youtube_heavy summary windows7-32 opt e10s 342.90 -> 266.12 16% tp6_youtube_heavy summary linux64 opt e10s 308.19 -> 258.17 For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=10190
Flags: needinfo?(jcoppeard)
Severity: normal → S3

(This bounced and was never followed up -- marking as Incomplete)

Status: REOPENED → RESOLVED
Closed: 9 years ago → 2 years ago
Resolution: --- → INCOMPLETE

We should look for a way to do this if we can without regressing performance.

Status: RESOLVED → REOPENED
Resolution: INCOMPLETE → ---

Thank you for re-opening this! Rooting this to get it out of future triage lists.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: