RFR: Improve humongous remset scan
William Kemper
wkemper at openjdk.java.net
Tue Jun 14 22:54:07 UTC 2022
On Tue, 14 Jun 2022 22:44:56 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> These changes allow humongous objects residing within the remembered set to be scanned by muitiple concurrent GC worker threads, allowing more efficient parallelization of the remembered set scanning effort.
>
> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 2464:
>
>> 2462: // old-gen heap regions.
>> 2463: if (r->is_humongous()) {
>> 2464: // Need to examine both dirty and clean cards during mixed evac.
>
> Sorry, I'm not seeing it. This code looks like it will compute the same `end_of_object` for every region in the humongous object (line 2468), but `start_of_scan` will be `r->bottom`. It seems like this code will have every thread that encounters a region in the humongous object scan the regions between `r` and `end_of_object`. The original method `oop_iterate_humongous` would scan only between `r->bottom` and `r->top`. Maybe we want `end_of_object` to be `r->top` and combine that with only scanning dirty cards?
Or, in this case, since we don't care about cards being dirty and we will scan the whole region, could just use the original method?
-------------
PR: https://git.openjdk.org/shenandoah/pull/144
More information about the shenandoah-dev
mailing list