Request for review (s) : 8017462: G1: guarantee fails with UseDynamicNumberOfGCThreads

Derek White derek.white at oracle.com
Tue Mar 10 19:13:04 UTC 2015


On 3/10/15 2:32 PM, Jon Masamitsu wrote:
>
> On 3/10/2015 9:43 AM, Derek White wrote:
>> On 3/10/15 12:26 PM, Jon Masamitsu wrote:
>>> 8017462: G1: guarantee fails with UseDynamicNumberOfGCThreads
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8017462
>>>
>>> When fewer than the maximum number of threads was being used for
>>> a parallel section, phase times for the threads that did not execute 
>>> and
>>> averages for the phase were misleading.  The fix passes the active 
>>> number of
>>> GC threads  to the G1 phase timers.
>>>
>>> http://cr.openjdk.java.net/~jmasa/8017462/webrev.00/
>>>
>>> Tested with gc_test_suite.
>> Hi Jon,
>>
>> Looks good to me.
>>
>> Just a question: In g1StringDedup.cpp:
>>   void G1StringDedup::unlink_or_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, bool allow_resize_and_rehash) {
>>     assert(is_enabled(), "String deduplication not enabled");
>> -  G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy();
>> -  g1p->phase_times()->note_string_dedup_fixup_start();
>> +  G1CollectedHeap* g1h = G1CollectedHeap::heap();
>> +  G1CollectorPolicy* g1p = g1h->g1_policy();
>> +  uint active_workers = g1h->workers()->active_workers();
>> +  g1p->phase_times()->note_string_dedup_fixup_start(active_workers);
>>     double fixup_start = os::elapsedTime();
>>   
>>     G1StringDedupUnlinkOrOopsDoTask task(is_alive, keep_alive, allow_resize_and_rehash);
>> -  G1CollectedHeap* g1h = G1CollectedHeap::heap();
>> -  g1h->set_par_threads();
>> +  g1h->set_par_threads(active_workers);
>>
>> You switched from not changing the number of active workers 
>> "set_par_threads()" to explicitly setting the
>> number "g1h->set_par_threads(active_workers)".
>>
>> Do you expect to get a different number of active threads this way, 
>> or are you just making the code clearer by
>> making the count explicit?
>
> I expect to get a different number of active workers.  The policy for 
> number of GC workers depends
> on the number of Java threads and the size of the heap that has been 
> committed.  Either/both can
> change so the number of GC workers can change.  Does that answer the 
> question?

OK, Thanks for the info Jon. So I guess there could be a slight 
performance difference then. To extent that the new active count is more 
up to date, it could be a tiny win.

  - Derek

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20150310/a936b1d5/attachment.htm>


More information about the hotspot-gc-dev mailing list