Feedback on Shenandoah Memory Performance
Daniel Oliveira
dan.oliveira at outlook.pt
Wed Sep 2 05:22:21 UTC 2020
Hello,
I'm an MSc student making a performance comparison on modern garbage collectors, including Shenandoah. I'm using the default configurations for all collectors (i.e., no explicit tuning) and noticed that the max memory usage with Shenandoah was always 85% of the total heap size (disclaimer, I set the -xms and -xmx as the same value to minimize the effect of runtime resizing, and memory commit hiccups). 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.
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. 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.
Best regards,
Daniel Gonçalves.
More information about the shenandoah-dev
mailing list