RFR: Concurrent code cache evacuation

Aleksey Shipilev shade at redhat.com
Wed Jun 28 10:31:07 UTC 2017


On 06/28/2017 12:20 PM, Roman Kennke wrote:
> I would probably not couple conc codecache evac to
> ShenandoahConcurrentCodeRoots, but rather make a new flag (or rename
> ShenandoahBarriersForConst once again). The reason for this is that
> while concurrent code cache marking is unproblematic with regards to
> performance (no new barriers required), concurrent code cache evacuation
> is not. It requires more barriers and can thus affect performance.

I was thinking that ShenandoahConcurrentCodeRoots should act as global
killswitch for concurrent code cache ops, both scanning and evacuating. So this
would happen:

 -ShConcCodeRoots ?ShBarriersForConst: scan at STW,       evac at STW
 +ShConcCodeRoots -ShBarriersForConst: scan concurrently, evac at STW
 +ShConcCodeRoots +ShBarriersForConst: scan concurrently, evac concurrently

Maybe what is missing from equation is an option for disabling concurrent scan?

> Your
> measurements don't show a big regression, but when I was doing my first
> experiments with it, the regression with compiler.sunflow was very
> pronounced. It is possible that this is gone (with all the changes done
> by Roland in the meantime, and probably also with your patch).

Aha. I had just remeasured this by hand:

# -Barriers
Compiler.sunflow  thrpt   10  190.151 ± 1.898  ops/min

# +Barriers
Compiler.sunflow  thrpt   10  188.369 ± 2.842  ops/min


Thanks,
-Aleksey



More information about the shenandoah-dev mailing list