Feedback on Shenandoah Memory Performance

Aleksey Shipilev shade at redhat.com
Wed Sep 2 06:37:40 UTC 2020


Hi,

On 9/2/20 7:22 AM, Daniel Oliveira wrote:
> Looking directly at the GC log, it showed that Shenandoah
> is only performing GC cycles whenever it reaches that memory ceiling, which makes me think that
> the GC is ignoring the default InitFreeThreshold (if there is one). Therefore, Shenandoah is not
> triggering learning collections and always triggering the default MinFreeThreshold (which I
> assume is 15% of the total heap) to perform GC unconditionally.

Adaptive heuristics should trigger either by allocation rate, or by crossing the min-free threshold. 
It should learn the allocation rate with a few early collections. But since you are using the very 
old build, it might happen that adaptive heuristics did not implement all of that consistently. 
Please try with up-to-date Shenandoah.

> To note that latency wise Shenandoah is performing as expected. However, throughput-wise, ZGC is
> outperforming Shenandoah significantly (5-10%), even for write-intensive workloads. I sent in
> annex the memory graphs for Shenandoah and ZGC performing the same experiment, and the GC log for
> Shenandoah. 

The attachments are scrubbed, can you please resend these to me privately?

> I'm using the JDK 11 version 2018-09-25 (the environment was inherited, so I cannot
> change it at this stage in the thesis). I would appreciate some feedback on these results because
> I think they might not be representative of Shenandoah.

Well, it feels the old build like this is not representative of Shenandoah, because it misses major 
throughput improvements and their backports to 11u: LRB barriers (JDK-8221766), self-fixing barriers 
(JDK-8231087), and the multitude of other minor improvements to both barrier code, optimizations 
around them, and general heuristics goodness.

Note: since we backport a lot of Shenandoah changes to 11u, what is there in 11 GA (I assume that's 
what you have) and what is there in recent 11.0.8+ are very different code bases. Since hardly 
anyone is using old builds, it seems useless to use them for performance comparisons.

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list