RFR: Forceful SATB buffer flushes should be time-periodic, not traffic-dependent

Aleksey Shipilev shade at redhat.com
Thu Jul 5 08:51:05 UTC 2018


http://cr.openjdk.java.net/~shade/shenandoah/satb-prompt-2/webrev.01/

We had this fix before in this form:
  http://hg.openjdk.java.net/shenandoah/jdk/rev/2eeb051dc58d

...but, running specjbb at different IR levels shows that sometimes SATB traffic is not enough to
perform flushes rapidly enough. It makes more sense to switch to periodic flushing. This reverts the
previous fix, and makes the patch more contained. It also does not enqueue too many buffers when
SATB traffic is high.

Before:

  Pause Final Mark (N) = 0.30 s (a = 3381 us) (n = 89)
                                (lvls, us = 607, 2168, 2598, 3145, 20625)
    Finish Queues      = 0.16 s (a = 1790 us) (n = 89)
                                (lvls, us =  22,  559,  998, 1504, 19526)

After:

  Pause Final Mark (N) = 0.18 s (a = 2111 us) (n = 87)
                                (lvls, us = 605, 1934, 2070, 2266, 3146)
    Finish Queues      = 0.05 s (a =  561 us) (n = 87)
                                (lvls, us =  23,  379,  467,  654, 2138)

Really, the problem is outliers in "before" case, because the traffic was low.

Testing: tier3_gc_shenandoah, benchmarks

-Aleksey



More information about the shenandoah-dev mailing list