RFR (M): 6672778: G1 should trim task queues more aggressively during evacuation pauses

Stefan Johansson stefan.johansson at oracle.com
Fri Apr 13 12:25:52 UTC 2018



On 2018-04-13 10:35, Thomas Schatzl wrote:
> Hi Stefan,
> 
>    thanks for your review... :)
> 
> On Thu, 2018-04-12 at 17:15 +0200, Stefan Johansson wrote:
>> Hi Thomas,
>>
>> On 2018-04-11 13:46, Thomas Schatzl wrote:
>>> Hi all,
>>>
>>>     I updated and (hopefully) improved the change a bit after some
>>> more thinking.
> [...]
>>>
>>> Webrevs:
>>> http://cr.openjdk.java.net/~tschatzl/6672778/webrev.0_to_1/ (diff)
>>> http://cr.openjdk.java.net/~tschatzl/6672778/webrev.1/ (full)
>>
>> Thanks for this update, I had a glance at the first version and I
>> think this is indeed simpler. Still have some comments though:
>> src/hotspot/share/gc/g1/g1CollectedHeap.cpp
>> 3129 root_processor->evacuate_roots(pss, pss->closures(), worker_id);
>>
>> Only pass in pss, and get the closures inside evactuate_roots.
>> -----
>> src/hotspot/share/gc/g1/g1SharedClosures.hpp
>> 48 double trim_time_sec() {
>> 49   return TicksToTimeHelper::seconds(_oops.trim_ticks_and_reset())
>> +
>> 50     TicksToTimeHelper::seconds(_oops_in_cld.trim_ticks_and_reset()
>> );
>> 51 }
>>
>> This could be removed now, right?
>> -----
>>
>> Apart from this me and Thomas has also spoken a bit offline so there
>> might be some additional changes.
>>
>> Thanks,
>> Stefan
> 
>    all done.
> 
> http://cr.openjdk.java.net/~tschatzl/6672778/webrev.1_to_2/ (diff)
> http://cr.openjdk.java.net/~tschatzl/6672778/webrev.2/ (full)

I like this :) Some additional small comments:

src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp
  516     _start_time += TicksToTimeHelper::seconds(_trim_time);

Maybe add a comment to explain when we update _start_time, something like:
// The trim_time should be excluded from this phase, do this by updating
// the start time.
-----

src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp
  380 class G1GCParPhaseTimesTracker : public CHeapObj<mtGC> {

Why do you need to change this to be CHeapObj instead of StackObj?
-----

src/hotspot/share/gc/g1/g1ParScanThreadState.hpp

   64   uint const _stack_drain_upper_threshold;
   65   uint const _stack_drain_lower_threshold;

As you know I like "drain" better than "trim" but to be consistent I 
think we should name these _queue_trim_xxxxx_threshold. Or go the other 
way and name everything "drain" =)
------

Thanks,
Stefan

> 
> Thanks,
>    Thomas
> 


More information about the hotspot-gc-dev mailing list