Open Bug 1694996 Opened 3 years ago Updated 3 years ago

Consider removing sweep groups

Categories

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

task

Tracking

()

People

(Reporter: jonco, Unassigned)

References

Details

Currently the GC arranges zones into groups for the purpose of sweeping and can sweep zones in one group while still marking those in another. This has a few advantages:

  • work that must be performed atomically when we start sweeping zones can be split between different GC slices
  • we can perform some marking, sweeping and finalization work of different groups of zones in parallel

It is also a huge source of complexity in the GC, particularly when it comes to handling cross-zone pointers and weak edges.

With the move to fissions we will see fewer zones, so less scope for the improvements this brings. We have also incrementalised more parts of the GC since this work was done, making the payoff smaller.

We should consider removing this.

The effect of doing this should be straightforward to measure via a Nightly experiment.

Whoa, I hadn't thought this far! I like the idea of measuring this in an experiment. Though I guess aggregate statistics can only tell us so much; if there are some unusual use cases where this would have a large effect, then the impact might get washed out (especially if there's less overhead in the single sweep group case.) It's risky making the worst cases worse. At the same time, it's very believable that this just isn't buying us nearly enough to be worth keeping.

Android might be the thing to watch.

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