RFR: Full region promotion
Kelvin Nilsen
kdnilsen at openjdk.java.net
Wed Sep 29 17:04:37 UTC 2021
Prior to this patch, full-region-promotion occurred during the final-evacuation safepoint. When heap regions are very large (e.g. 16 MB) and a large number of heap regions need to be promoted, this was measured to require over 500 ms in certain scenarios. Another disadvantage of the prior implementation is that entire heap regions are promoted as-is without any compaction. A problem with this is that all fragments of garbage within the young-region are promoted into old-gen, where the target heap-region utilization is generally much higher than heap-utilization target within young-gen memory. Once promoted, it is much more costly to compact this memory because an old-gen collection is much more expensive than a young-gen collection.
This patch moves region promotion out of the safepoint. Regions that have reached the tenure age are biased for inclusion within the collection set and are processed during concurrent evacuation using the established conventions. Humongous heap regions are also promoted during concurrent evacuation rather than during the safepoint.
-------------
Commit messages:
- Fix whitespace
- Add comment to explain avoidance of floating point math
- Respond to reviewer feedback
- Remove instrumentation
- Tinkering with instrumentation
- Fix error in collection-set evacuation under generational mode
- Merge branch 'shenandoah' into full-region-promotion
- New instrumentation to chase a new bug
- Dial back instrumentation
- Remove deprecated code for whole-region promotion
- ... and 6 more: https://git.openjdk.java.net/shenandoah/compare/f9e068dc...5921401e
Changes: https://git.openjdk.java.net/shenandoah/pull/75/files
Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=75&range=00
Stats: 308 lines in 13 files changed: 111 ins; 150 del; 47 mod
Patch: https://git.openjdk.java.net/shenandoah/pull/75.diff
Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/75/head:pull/75
PR: https://git.openjdk.java.net/shenandoah/pull/75
More information about the shenandoah-dev
mailing list