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

Jon Masamitsu jon.masamitsu at oracle.com
Tue Mar 10 18:32:58 UTC 2015


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?

Thanks for the review.

Jon

>
>  - Derek

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


More information about the hotspot-gc-dev mailing list