RFR: 8348595: GenShen: Fix generational free-memory no-progress check [v2]

Kelvin Nilsen kdnilsen at openjdk.org
Mon Feb 10 23:43:11 UTC 2025


On Fri, 7 Feb 2025 23:59:52 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:

>> At the end of a degenerated GC, we check whether sufficient progress has been made in replenishing the memory available to the mutator. The test for good progress is implemented as a ratio of free memory against the total heap size.
>> 
>> For generational Shenandoah, the ratio should be computed against the size of the young generation. Note that the size of the generational collection set is based on young generation size rather than total heap size.
>> 
>> This issue first identified in GenShen GC logs, where a large number of degenerated cycles were upgrading to full GC because the free-set progress was short of desired by 10-25%.
>
> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Respond to reviewer feedback
>   
>   In testing suggested refinements, I discovered a bug in original
>   implementation.  ShenandoahFreeSet::capacity() does not represent the
>   size of young generation.  It represents the total size of the young
>   regions that had available memory at the time we most recently rebuilt
>   the ShenandoahFreeSet.
>   
>   I am rerunning the performance tests following this suggested change.

These are updated performance results after making the change that uses generation size to determine expected.  This change computes a larger expected size, increasing the likelihood that a particular degenerated cycle will be considered "bad progress":

![Screenshot 2025-02-10 at 3 38 18 PM](https://github.com/user-attachments/assets/d0826502-aec1-4e30-88e7-03a4d25e5661)

This represents overall improvement compared to previously reported number.  It would appear that the difference in performance might be the result of "random noise".

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

PR Comment: https://git.openjdk.org/jdk/pull/23306#issuecomment-2649499090


More information about the hotspot-gc-dev mailing list