RFR: 8327000: GenShen: Integrate updated Shenandoah implementation of FreeSet into GenShen [v27]

William Kemper wkemper at openjdk.org
Tue Jun 25 21:42:33 UTC 2024


On Tue, 25 Jun 2024 20:38:37 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

>> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Improve consistency of OOM in GenShen mode
>>   
>>   Treat any full GC that enables a previously blocked allocation as good
>>   progress.
>
> src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp line 307:
> 
>> 305:   // because that probably means the heap is overloaded and/or fragmented.
>> 306:   if (!metrics.is_good_progress()) {
>> 307:     heap->notify_gc_no_progress();
> 
> Again, let me make sure I understand the reasoning here:
> 
> We are already going to cancel gc and degenerate, so the concurrent collect will return failure, and the control thread will not record progress.
> 
> But I don't see anything that actually records lack of progress.
> 
> I assume then that a degenerated GC in and of itself isn't indicative of lack of progress, and that lack of  progress shouldn't be recorded here, but rather after having worked harder, perhaps in `op_degenerated_futile()`?
> 
> It would be good to leave some clarifying comments for when we read this code many months later and have forgotten the context. May be something like:
> 
> 
>   // We haven't made progress; we'll try harder by canceling GC and upgrading to a full gc
>   // to see if we make more progress.

I think that's intentional. We only want to record no-progress after a full GC.

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

PR Review Comment: https://git.openjdk.org/shenandoah/pull/440#discussion_r1653605043


More information about the shenandoah-dev mailing list