Hi there,
I completely agree that best choice is jumping to ZGC/ShenandoahGC.
I have been doing some tests with both using OpenJDK 15.0.2.In general pause
times are quite predictable even without tuning. Both GCs arenot tenured, and
are able to make full GCs but mainly all the job is concurrentwith the app and
pauses are quite ok (typically < 5 msecs)
Regarding Geode Resource Manager when using heap-basedeviction, I think both
GCs can use a similar approach:
- For ZGC '-XX:SoftMaxHeapSize’ could be a limitfor Geode to figure out when
eviction should be triggered. If not set, in mytests ZGC tried to use the max
heap size to the limit, taking benefit that cancollect garbage concurrently. In
Java 16 it is even able to do almost all thework concurrently with expected
pauses under 1 msec. (Check this blog from PerLiden ZGC What’s new in JDK 16,
principal developerfor ZGC)
|
|
| |
ZGC What’s new in JDK 16
Per Liden
JDK 16 is out, and as usual, each new release comes with a bunch of new
features, enhancements and bug fixes. ZG...
|
|
|
I was testing with XX:SoftMaxHeapSizeand the soft limit was honored by the JVM
In general ZGC worked fine, when GC is triggeredyou can see a CPU spike that is
negictible, but almost of the job is doneconcurrently with Geode
- Shenandoah has a differentparameter, -XX:ShenandoahMinFreeThreshold that can
do the job. By defaultis 10%, so that means that Shenandoah GC is triggered
when only 10% of the heapsize is free. Taking benefit of this, Geode Resource
Manager heap-basedeviction could assume that if free heap is over the value
according to theparameter during a window, probably eviction should kick-in.
I was testing it also, and worked fine and theJVM is honoring it properly
I think that implementation in both cases could be quitesimilar and I think
could be useful to go ahead with both options and discardG1, considering that:
- -XX:SoftMaxHeapSize supportfor G1 looks stack for quite a long time so far
- Shenandoah has been backported to OpenJDK 11 (LTS).Probably for the people
that prefers to use Java LTS, this is the best optionso far. One CON (a big
one) is that Oracle builds are not including Shenandoah,but many other builds
are available (including commercial support)
- ZGC is production ready in OpenJDK 15 and improved in Java16 to be a serious
contender to Azul C4. Probably when next Java LTS is there(Java 17?), I think
it will be the perfect match for Geode in my opinion
Do you think that heap based eviction is the main aspect to consider to make a
proposal? Any other aspect that the proposal should include?
Thanks in advance,
/Cheva
En miércoles, 31 de marzo de 2021 19:11:08 CEST, Anthony Baker
<[email protected]> escribió:
In our testing we’ve found mixed results with G1 and Geode for many
applications.
- G1 does require significant tuning to achieve desired pause times on many
workloads. This is somewhat disappointing as in practice it requires a similar
degree of effort/complexity as CMS.
- G1 tends to be at odds with the Geode Resource Manager when using heap-based
eviction (this is a very common safety mechanism). There may be some hope if
'-XX:SoftMaxHeapSize’ is ever merged to relevant versions like jdk8.
I suspect the best choice is to skip G1 and go directly to Z / Shenandoah which
are more targeted at low latency high memory workloads. I would LOVE to see an
RFC proposing this effort :-)
Anthony
> On Mar 31, 2021, at 6:58 AM, Jacob Barrett <[email protected]> wrote:
>
> There has been lots of talk over the years but no action I am aware of. I
> would suggest we start with Z since it is more widely available. In
> benchmarking it has shown impressive out of the box improvements over heavily
> tuned CMS. Shenandoah is very similar in behavior and structure so picking it
> up after should be easy.
>
>> On Mar 31, 2021, at 5:58 AM, Alberto Gomez <[email protected]> wrote:
>>
>>
>> Hi,
>>
>> The Geode documentation on the Resource Manager ([1]) provides information
>> about its integration with CMS and G1 although it seems to suggest that only
>> CMS is well supported with it, or at least, it is the preferred alternative.
>>
>> Given that CMS has been deprecated in JDK 9 (and will not be available in
>> JDK 14) and that there are newer and more efficient GCs like Shenandoah and
>> ZGC available (Shenandoah is supported in OpenJDK 11.0.9), I would like to
>> know if there is any work or discussions ongoing in the community about the
>> integration of ZGC and/or Shenandoah with Geode's Resource Manager.
>>
>> Thanks in advance,
>>
>> Alberto G.
>>
>> [1]:
>> https://geode.apache.org/docs/guide/113/managing/heap_use/heap_management.html