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