Open Bug 1700291 Opened 4 years ago Updated 4 months ago

[meta] Pretenure long-lived allocations

Categories

(Core :: JavaScript: GC, enhancement, P2)

enhancement

Tracking

()

People

(Reporter: jonco, Assigned: jonco)

References

(Depends on 4 open bugs, Blocks 1 open bug)

Details

(Keywords: meta)

We currently assume the generational hypothesis holds and make allocations in the nursery whenever possible. This is a good default but is not true for all workloads, and when it doesn't hold we see many long nursery collections.

Previously, we supported some pre-tenuring via information associated with ObjectGroups, but these were removed in bug 1689413.

We'd like to do something like V8 does and record information about specific allocation sites to enable us to decide when it's worth pretenuring allocations made at that site. This could apply to strings and BigInts as well as JS objects, which were not supported by the previous scheme.

See the Google paper on this: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43823.pdf

Depends on: 1704576
Blocks: 1562816
Depends on: 1710426
Keywords: meta
Summary: We don't pretenure long-lived allocations → [meta] Pretenure long-lived allocations
Depends on: 1711063
No longer blocks: 1562816
Depends on: 1562816
Depends on: 1722010
Depends on: 1869242

Support for object literal and array literal allocation sites landed in bug 1711063 but there is more work that can be done here.

Minor GCs with high promotion rates during Speedometer 3 and the matrix react benchmarks indicate that we may be missing opportunities to pretenure long lived allocations.

Depends on: 1892764
Depends on: 1894005
Depends on: 1894012
Depends on: 1898270
Depends on: 1898461
Depends on: 1900324
Depends on: 1892508
Depends on: 1900778
Depends on: 1902308
Depends on: 1913730
You need to log in before you can comment on or make changes to this bug.