RFR: Decouple generational heuristics

William Kemper wkemper at openjdk.java.net
Wed Sep 29 19:24:25 UTC 2021


### Summary
This commit is part of an effort to improve the performance of the old generation heuristic.

* added `ShenandoahOldGCHeuristics` - choose the heuristic for old generation (adaptive is default, aggressive is not allowed, only used to trigger old marking, has no influence on cset selection for old generation).
* added `ShenandoahOldGarbageThreshold` - The minimum percentage of garbage in old region to be included in old cset.
* added `ShenandoahOldEvacReserve` - Percentage of old generation to withhold from old evacuation.
* added `ShenandoahGuaranteedOldGCInterval` - Minimum time between old generation collection (default is 10 min).
* refactored old generation heuristic class hierarchy to reduce code duplication
* added more detail to log messages and formatted byte sizes for easier human readability

### Testing
Passes tier3 shenandoah jtreg tests and Dacapo and Heapothesys on x86 and aarch64.

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

Commit messages:
 - Log immediate and collectable garbage for old generation
 - Merge branch 'shenandoah' into decouple-gen-heuristics
 - Fix uninitialized member
 - Merge branch 'shenandoah' into decouple-gen-heuristics
 - Apply configuration to old gen's trigger heuristic
 - Add parameter to control guaranteed gc interval for old generation
 - Add parameters to control Old generation cset selection
 - Record name of generation in log message
 - Merge branch 'promotion-rate-heuristic' into decouple-gen-heuristics
 - Merge branch 'shenandoah' into promotion-rate-heuristic
 - ... and 11 more: https://git.openjdk.java.net/shenandoah/compare/ea8469a1...45153b9e

Changes: https://git.openjdk.java.net/shenandoah/pull/76/files
 Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=76&range=00
  Stats: 1239 lines in 29 files changed: 206 ins; 995 del; 38 mod
  Patch: https://git.openjdk.java.net/shenandoah/pull/76.diff
  Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/76/head:pull/76

PR: https://git.openjdk.java.net/shenandoah/pull/76


More information about the shenandoah-dev mailing list