RFR: 8224185: ZGC: Introduce "High Usage" rule
Per Liden
per.liden at oracle.com
Mon May 20 09:44:53 UTC 2019
Hi Thomas,
On 5/20/19 11:34 AM, Thomas Schatzl wrote:
> Hi Per,
>
> On Mon, 2019-05-20 at 10:11 +0200, Per Liden wrote:
>> Start a GC cycle if the amount of free memory is 5% or less. This is
>> a preventive measure in the case where the application has a very
>> low allocation rate, such that the allocation rate rule doesn't
>> trigger, but the amount of free memory is still slowly but surely
>> heading towards zero. In this situation, we should start a GC cycle
>> to avoid a potential allocation stall later.
>>
>> Testing: New jtreg test added. Currently running tier 1-6.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8224185
>> Webrev: http://cr.openjdk.java.net/~pliden/8224185/webrev.0
>>
>
> just pointing out the obvious: this means that ZGC will potentially
> never use 5-Epsilon% of the heap.
>
> I do not recommend such a threshold being a fixed, compiled in constant
> size: while I understand that you want to have as few options as
> possible with ZGC, 5% of 100GB are still 5GB which may be better used
> for use in the application in some cases.
>
> I.e. G1 has a similar (10%) threshold, and we've run in a few
> situations where this has been too much and unneeded, particularly with
> large heaps.
> Now I know that ZGC pauses are by far less intrusive than G1's, but
> still the concurrent marking has its cost. Making it configurable would
> allow people getting the last bit of performance out of it if they
> want.
The situation is slightly different for ZGC. This rule typically kicks
in when the allocation rate is very low. If the allocation rate is very
high, we typically collect a lot earlier than 95% full heap anyway.
Regarding a flag. We've discussed this within the team, and decided to
not have one for now. It can be added later if it turns out to be a need
for it.
cheers,
Per
More information about the hotspot-gc-dev
mailing list