RFR (M): 8040162: Avoid reallocating PLABs between GC phases in G1

Thomas Schatzl thomas.schatzl at oracle.com
Thu Aug 13 10:39:58 UTC 2015


Hi,

On Wed, 2015-08-12 at 15:57 +0200, Mikael Gerdin wrote:
> Hi Thomas,
> 
> On 2015-08-12 12:38, Thomas Schatzl wrote:
> > Hi,
> >
> > On Tue, 2015-08-11 at 16:56 +0200, Thomas Schatzl wrote:
> >> Hi David,
> >>
> >> On Tue, 2015-08-11 at 15:17 +0200, David Lindholm wrote:
> >>> Hi Thomas,
> >>>
> >>> Great work. Looks good, reviewed.
> >>
> >>    thanks for the review.
> >
> >    while testing the change a little more an issue with -XX:
> > +ParallelRefProcEnabled has been found.
> >
> > Here is a new webrev:
> > http://cr.openjdk.java.net/~tschatzl/8040162/webrev.0_to_1/ (diff)
> > http://cr.openjdk.java.net/~tschatzl/8040162/webrev.1/ (full)
> 
> in g1CollectedHeap.cpp at
> 4571       }
> 4572
> 4573       _root_processor->evacuate_roots(strong_root_cl,
> 4574                                       weak_root_cl,
> 4575                                       strong_cld_cl,
> 4576                                       weak_cld_cl,
> 4577                                       trace_metadata,
> 4578                                       worker_id);
> 4579
> 4580       G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, pss);
> 4581       double start_strong_roots_sec = os::elapsedTime();
> 4582       _root_processor->scan_remembered_sets(&push_heap_rs_cl,
> 4583                                             weak_root_cl,
> 4584                                             worker_id);
> 4585       double strong_roots_sec = os::elapsedTime() - 
> start_strong_roots_sec;
> 4586
> 
> Shouldn't start_strong_roots_sec be taken before the call to 
> evacuate_roots? Otherwise it just measures the time it takes to scan the 
> remembered sets.
> 
> 5400
> 5401 // Weak Reference processing during an evacuation pause (part 1).
> 5402 void 
> G1CollectedHeap::process_discovered_references(G1ParScanThreadState** 
> pss_) {
> 5403   double ref_proc_start = os::elapsedTime();
> 5404
> 
> If you wan the local to be called pss, can you name the ** 
> per_thread_states as it's named in the caller?
> 
> in g1OopClosures.hpp
> Would you consider moving set_ref_processor to G1ParScanClosure since 
> it's only used for that particular concrete type?
> As I understand it it's only needed for the _scanner G1ParScanClosure 
> instance in the G1PSS that you need to be able to set the ref processor.
> 
> Otherwise the change looks good to me.

All fixed. Thanks particularly for catching the issue with the
start_strong_roots_sec.

Thanks for the review.

Here are new webrevs.

http://cr.openjdk.java.net/~tschatzl/8040162/webrev.1_to_2/ (diff)
http://cr.openjdk.java.net/~tschatzl/8040162/webrev.2/ (full)

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list