Java heap size defaults when running with CGroups in Linux.
Steven Schlansker
stevenschlansker at gmail.com
Thu Dec 1 00:10:45 UTC 2016
We run in this configuration and I just want to point out that there's more going
on than simply correctly fixing heap size. It's a great first start but we also found
that we had to spend a fair amount of time playing with all the other tuneables such
as Metaspace, Code Cache, etc. in order to get our Java apps to run stably
in cgroups.
Not in anyway to argue against this change, just that it'd be nice to get the "big picture"
tackled at some point -- heap is only one part :)
Thanks!
Steven
> On Nov 30, 2016, at 2:53 PM, Mikael Vidstedt <mikael.vidstedt at oracle.com> wrote:
>
>
> Out of curiosity, why wouldn’t this be the default behavior? That is, in which cases is it not a good idea to use the cgroup information when sizing the JVM?
>
> Cheers,
> Mikael
>
>
>> On Nov 30, 2016, at 1:59 PM, Christine Flood <chf at redhat.com> wrote:
>>
>>
>> The problem is that when running the JVM inside of a cgroup, such as docker, the JVM bases it's default heap parameters on the size of the whole machine's memory not on the memory available to the container. This causes errors as discussed on this blog entry. http://matthewkwilliams.com/index.php/2016/03/17/docker-cgroups-memory-constraints-and-java-cautionary-tale/
>>
>> Basically the JVM dies in a non-obvious manner.
>>
>> The solution I propose is to add a parameter -XX:+UseCGroupLimits to the JVM which states that you should look to the CGroup when calculating default heap sizes.
>>
>> Webrev is here: http://cr.openjdk.java.net/~andrew/rh1390708/webrev.01/
>>
>>
>> Christine
>>
>>
>>
>>
>>
>>
>>
>
More information about the hotspot-dev
mailing list