RFR: Full region promotion [v2]

Kelvin Nilsen kdnilsen at openjdk.java.net
Mon Oct 4 20:34:19 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.

Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:

  Add comments to clarify boundary case handling

-------------

Changes:
  - all: https://git.openjdk.java.net/shenandoah/pull/75/files
  - new: https://git.openjdk.java.net/shenandoah/pull/75/files/5921401e..8fdb0703

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=75&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=75&range=00-01

  Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 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