RFR: Expand old on demand [v44]
Kelvin Nilsen
kdnilsen at openjdk.org
Wed May 24 16:49:13 UTC 2023
On Wed, 24 May 2023 14:57:30 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
>> src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp line 206:
>>
>>> 204: "milliseconds. Setting this to 0 disables the feature.") \
>>> 205: \
>>> 206: product(uintx, ShenandoahGuaranteedYoungGCInterval, 30*1000, EXPERIMENTAL, \
>>
>> Why was this made so small? Are there cases where, say, for a quiescent/idle service instance with little or no load, we must still, for some reason, trigger young gc's twice each minute?
>
> Let me experiment with reverting to original value. There were times when our heuristics were getting flat-footed and we triggered late after long idle spans, but this "fix" may have just masked a different problem that may now be resolved.
I will revert this change. My test on the Extremem phased update workload reveals that this does cause some degenerated cycles that are avoided when we have the shorter interval. Specifically, that workload has a wait-for-start-of-simulation pause that results in a 45 seconds of GC idle time, followed by a late trigger that degenerates during mark and then a back-to-back trigger for the next GC (which is dealing with pent-up demand following the "long" degenerated pause) and this second GC also degenerates during mark. Following these two degenerated GCs, GenShen is able to recalibrate its heuristic triggers and stay ahead of pace throughout the remainder of the 20 minute simulation.
I believe the reason we are caught off guard here is because we have not yet "learned" the allocation rate. The first (late) trigger after the 45s idle span is: Free (3096M) is below minimum threshold (3101M)
Am reverting this change because I recognize that setting this to 30 seconds is arbitrary and not a robust fix to the bigger triggering problem.
-------------
PR Review Comment: https://git.openjdk.org/shenandoah/pull/248#discussion_r1204498046
More information about the shenandoah-dev
mailing list