RFR (M): 8034842: Parallelize the Free CSet phase in G1

Jon Masamitsu jon.masamitsu at oracle.com
Mon Jul 11 15:57:12 UTC 2016


Thomas,

Looks correct as is.  Just some comments about readability
for your considerations.

http://cr.openjdk.java.net/~tschatzl/8034842/webrev.6/src/share/vm/gc/g1/g1CollectedHeap.cpp.frames.html

I found this a bit hard to read.

> 4821 size_t cur = Atomic::add(chunk_size(), &_parallel_work_claim) - 
> chunk_size();

I'd suggest

end = Atomic::add(chunk_size(), &_parallel_work_claim);
size_t cur = end - chunk_size();

and then at  4828

end = MIN2(end, _num_work_items);


Do you have any concerns here about having to load the
heap and then having to load the policy - that is enough
concerns to add a _g1h and _g1_policy and initialize them
in prepare_work()?

4804 G1GCPhaseTimes* timer = 
G1CollectedHeap::heap()->g1_policy()->phase_times();


Would 1U work here in place of (size_t) 1.

4860 uint const num_chunks = (uint)MAX2(_collection_set.region_length() 
/ G1FreeCollectionSetTask::chunk_size(), (size_t)1);


Could you explain your choice of "32" here.  Even just to say
experiments suggested that 32 was a good number or just
based on general experience, it seems like a good number.
It will save future generations from wondering.

4801 static size_t chunk_size() { return 32; } Would the comment "Claim 
parallel work" be better just before line 4821? Since that is where the 
chunks are claimed? Or should that comment be "Start parallel work"?
// Claim parallel work. 4821 size_t cur = Atomic::add(chunk_size(), 
&_parallel_work_claim) - chunk_size();


http://cr.openjdk.java.net/~tschatzl/8034842/webrev.6/src/share/vm/gc/g1/g1CollectedHeap.hpp.frames.html

Would "skip_remset" and "skip_hot_card_cache" be better names?
Just to avoid any implication that the RS and hot cache are needed
later.

653 bool keep_remset,
654 bool keep_hot_card_cache = false,


That's all.

Jon

On 07/08/2016 03:53 AM, Thomas Schatzl wrote:
> Hi all,
>
> On Tue, 2016-06-28 at 13:02 +0200, Thomas Schatzl wrote:
>
>              ^--- ping!
>
>> Hi everyone,
>>
>>    there is a new version of this CR available at
>>
>> http://cr.openjdk.java.net/~tschatzl/8034842/webrev.5/ (full)
>>
>> Due to the changes afforded by JDK-8159978 there were a lot of
>> changes
>> that made an incremental webrev useless. However I think this split-
>> out
>> made the change nicer (imo).
>>
>> Testing:
>> jprt, vm.gc testlist
> Erik H. had some minor comments (not a full review, just some
> unnecessary additions), and I also fixed some whitespace issues in this
> new revision:
>
> http://cr.openjdk.java.net/~tschatzl/8034842/webrev.6/ (full)
> http://cr.openjdk.java.net/~tschatzl/8034842/webrev.5_to_6/ (diff)
>
> Thanks,
>    Thomas
>



More information about the hotspot-gc-dev mailing list