RFR(M): 6921087: G1: remove per-GC-thread expansion tables from the fine-grain remembered sets

John Cuthbertson john.cuthbertson at oracle.com
Mon Jun 25 19:51:20 UTC 2012


Hi Brandon,

Thanks for the suggestion. The set of changes sent out were just the 
cleanup changes. Thomas actually has an optimization where he maintains 
a list of PRTs for each RSet. When he comes to free them - it's a single 
list concatenation on to the free list which should have the same 
benefit as you describe. In the meantime I'll forward your email to 
Thomas to see if he has any comments.

Thanks,

JohnC

On 06/19/12 13:15, Brandon Mitchell wrote:
> @@ -992,10 +714,10 @@
>  void OtherRegionsTable::clear() {
>    MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag);
>    for (size_t i = 0; i < _max_fine_entries; i++) {
> -    PosParPRT* cur = _fine_grain_regions[i];
> +    PerRegionTable* cur = _fine_grain_regions[i];
>      while (cur != NULL) {
> -      PosParPRT* nxt = cur->next();
> -      PosParPRT::free(cur);
> +      PerRegionTable* nxt = cur->next();
> +      PerRegionTable::free(cur);
>        cur = nxt;
>      }
>
> Linking the PerRegionTables into a temporary list in the loop and
> calling PerRegionTable::free() with that list should reduce contention
> potential on the global freelist. You could also tighten up the
> MutexLockerEx around the loop, and link to the free list without holding
> that Mutex around the freelist CAS/spin cycle unnecessarily.
>
> John Cuthbertson <john.cuthbertson at oracle.com> writes:
>
>   
>> Hi Everyone,
>>
>> Can I have a review for the cleanup changes, supplied by Thomas
>> Schatzl (Johannes Kepler University at Linz), for this CR? The webrev
>> can be found at: http://cr.openjdk.java.net/~johnc/6921087/webrev.0/
>>
>> Summary:
>> Thomas has removed the per thread expansion tables (PosParPRT) and
>> associated, unused, expansion and compaction code along with some
>> additional unused code. This change significantly reduces the code
>> complexity of the fine grained RSet entries. These changes are a
>> prerequisite for some other changes that Thomas has been working on to
>> optimize the freeing of RSets' fine grained entries.
>>
>> I've looked at the changes and they have a thumbs up from me.
>>
>> Testing: OpenDS (performed by Thomas), the GC test suite with heap
>> verification enabled (me), and jprt (me).
>>
>> Thanks,
>>
>> JohnC
>>     




More information about the hotspot-gc-dev mailing list