RFR: Performance improvements for non-generational modes
William Kemper
wkemper at openjdk.org
Fri Mar 3 16:37:49 UTC 2023
There are a basket of changes here:
* Make heuristics a bit less aggressive:
* Revert threshold triggers to use `available` rather than adjusted head room.
* Remove code that adjusted average gc time, it was causing wild fluctuations and making heuristic behave erratically
* Skip over more generational mode constraints on the allocation path
* Disable `ShenadoahEvacLABRatio` by default as it causes unused bytes in survivors regions, which in turn leads to these regions to being included in the mutator view of free memory. This contributed to higher fragmentation rates.
* More detailed debugging messages under the `gc+free` tags.
-------------
Commit messages:
- Backout some of the more excessive instrumentation
- Merge branch 'master' into regression-hunt
- Merge branch 'shenandoah-master' into regression-hunt
- More instrumentation, optimize path for non-generational modes
- More instrumentation for free set and collection set
- Use global generation for usage account in non-generational modes
- Assertions that generational constraints aren't being misapplied
- Only check if region is in generation when in generational mode
- Use available, not headroom for threshold triggers
- Set region logging to trace level
- ... and 2 more: https://git.openjdk.org/shenandoah/compare/ebc1fd1d...58bd7b36
Changes: https://git.openjdk.org/shenandoah/pull/220/files
Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=220&range=00
Stats: 216 lines in 12 files changed: 74 ins; 69 del; 73 mod
Patch: https://git.openjdk.org/shenandoah/pull/220.diff
Fetch: git fetch https://git.openjdk.org/shenandoah pull/220/head:pull/220
PR: https://git.openjdk.org/shenandoah/pull/220
More information about the shenandoah-dev
mailing list