RFR (S): Enable ShenandoahConcurrentCodeRoots

Roman Kennke rkennke at redhat.com
Tue Jan 31 13:49:24 UTC 2017


Great. Go!

Roman

Am Dienstag, den 31.01.2017, 13:35 +0100 schrieb Aleksey Shipilev:
> Hi,
> 
> While investigating the cause for the bimodal behavior for Init-Mark:
> 
>  [14.162s][info][gc] GC(1) Pause Init-Mark 3.810ms
>  [17.943s][info][gc] GC(2) Pause Init-Mark 3.327ms
>  [20.599s][info][gc] GC(3) Pause Init-Mark 3.442ms
>  [22.953s][info][gc] GC(4) Pause Init-Mark 0.819ms
>  [25.357s][info][gc] GC(5) Pause Init-Mark 2.861ms
>  [27.838s][info][gc] GC(6) Pause Init-Mark 3.013ms
>  [30.602s][info][gc] GC(7) Pause Init-Mark 3.440ms
>  [33.417s][info][gc] GC(8) Pause Init-Mark 3.113ms
>  [36.279s][info][gc] GC(9) Pause Init-Mark 0.838ms
>  [39.098s][info][gc] GC(10) Pause Init-Mark 3.264ms
>  [41.880s][info][gc] GC(11) Pause Init-Mark 2.713ms
>  [44.635s][info][gc] GC(12) Pause Init-Mark 2.832ms
>  [47.135s][info][gc] GC(13) Pause Init-Mark 2.876ms
>  [49.514s][info][gc] GC(14) Pause Init-Mark 0.856ms
> 
> ...found that scanning code cache when class_unload=false takes a few
> milliseconds. Then discovered ShenandoahConcurrentCodeRoots, which
> scans the
> code roots in concurrent marking workers under the CodeCache_lock.
> Enabling it
> seems to help with Init-Mark times!
> 
>  before: Initial Mark Pauses (net)   =     0.51 s (a =     2648 us)
> (n =   193)
>     (lvls, us =      686,     2734,     2969,     3125,     4058)
> 
>   after: Initial Mark Pauses (net)   =     0.24 s (a =     1173 us)
> (n =   202)
>     (lvls, us =      752,     1113,     1172,     1250,     3046)
> 
> I cannot see the theoretical problems with enabling it. Both jcstress
> and
> hotspot_gc_shenandoah pass with the flag turned on by default too.
> So, let's do it:
>   http://cr.openjdk.java.net/~shade/shenandoah/codecache-scan/webrev.
> 01/
> 
> Thanks,
> -Aleksey
> 


More information about the shenandoah-dev mailing list