RFR (S): Sorting the regions for collection set takes a while during pause

Aleksey Shipilev shade at redhat.com
Thu Jan 26 17:39:34 UTC 2017


Hi,

Profiled the pause-intensive application for fun, and spotted an easy
optimization target. In final mark pause, we select collection set, and for
that, we sort the regions by garbage. This incurs (N log N) calls to comparator,
which calls SHHR->garbage() and handles nulls, etc.

Doing a simple trick:
 http://cr.openjdk.java.net/~shade/shenandoah/pause-sort-better/webrev.01/

...improves timings:

before:

  Final Mark Pauses (gross) = 7.05 s (a = 1059 us) (n =  6659)
    (lvls, us = 717, 805, 830, 912, 9376)

  Final Mark Pauses (net)   = 3.03 s (a =  454 us) (n =  6659)
    (lvls, us = 102, 211, 221, 270, 8728)

  Prepare Evacuation = 2.04 s (a = 306 us) (n =  6659)
    (lvls, us = 273, 293, 297, 301, 1490)

after:

  Final Mark Pauses (gross) = 6.12 s (a = 851 us) (n =  7195)
    (lvls, us = 547, 605, 629, 689, 5335)

  Final Mark Pauses (net)   = 3.15 s (a = 438 us) (n =  7195)
    (lvls, us = 98, 203, 211, 260, 4877)

  Prepare Evacuation = 0.75 s (a = 105 us) (n =  7195)
    (lvls, us = 82, 96, 105, 109, 187)

0.2 ms off the already low pause time.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list