RFR: Improve evacuation instrumentation

William Kemper wkemper at openjdk.org
Mon Nov 7 17:16:49 UTC 2022


On Mon, 7 Nov 2022 16:16:33 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:

>> This change adds instrumentation to reveal the following:
>> * How many bytes were evacuated by gc workers and mutators
>> * How many bytes were abandoned due to evacuation races
>> * The age of survivors
>> * The break down of targets for evacuation in the collection set
>> 
>> The implementation is based on a new thread local structure to track and aggregate these statistics.
>
> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 858:
> 
>> 856:   // We squelch excessive reports to reduce noise in logs.  Squelch enforcement is not "perfect" because
>> 857:   // this same code can be in-lined in multiple contexts, and each context will have its own copy of the static
>> 858:   // last_report_epoch and this_epoch_report_count variables.
> 
> Is this comment still relevant.  Maybe not since the code is no longer in-lined in multiple contexts.
> 
> Thanks for this improvement to the code structure.  This should be relatively rare, so we don't want to in-line it everywhere.

Yes, I think the comment is still relevant. The main change here was to get the gc cycle id from the control thread, rather than the `GCId::current()` (which can apparently only be used from a named thread).

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

PR: https://git.openjdk.org/shenandoah/pull/167


More information about the shenandoah-dev mailing list