RFR: 8325670: GenShen: Allow old to expand at end of each GC
Y. Srinivas Ramakrishna
ysr at openjdk.org
Mon Feb 12 21:23:07 UTC 2024
On Mon, 12 Feb 2024 17:36:45 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
> At the end of GC, we set aside collector reserves to satisfy anticipated needs of the next GC.
>
> This PR reverts a change that accidentally prevents old-gen from being enlarged by this action. The observed failure condition was that mixed evacuations were not able to be performed, because old-gen was not large enough to receive the results of the desired evacuations.
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 1275:
> 1273: // In the case that ShenandoahOldEvacRatioPercent equals 100, max_old_reserve is limited only by xfer_limit.
> 1274: const size_t max_old_reserve = (ShenandoahOldEvacRatioPercent == 100) ?
> 1275: old_available + xfer_limit: (young_reserve * ShenandoahOldEvacRatioPercent) / (100 - ShenandoahOldEvacRatioPercent);
I guess I don't understand two things here:
1. Why do we special-case ShenandoahOldEvacRationPercent == 100 here? When it's less that 100, we consider xfer_limit only in the deficit calculations below. Should we be adding xfer_limit to the result of the above calculation irrespective of the setting of ShenandoahOldEvacRationPercent ?
2. Where was this adjustment being made in the code before the changes of https://github.com/openjdk/shenandoah/pull/369 ?
-------------
PR Review Comment: https://git.openjdk.org/shenandoah/pull/394#discussion_r1486787363
More information about the shenandoah-dev
mailing list