Java heap size defaults when running with CGroups in Linux.
Christine Flood
chf at redhat.com
Thu Dec 1 14:50:05 UTC 2016
Unfortunately, if you aren't actually inside a cgroup, /sys/fs/cgroup/memory/memory.limit_in_bytes still exists and contains an apparently bogus value. I've got a question in to the docker folks to find out why.
In the short term, providing a runtime flag gives us a way to protect customers that are running inside a container and not change the current behavior for everyone else.
Christine
----- Original Message -----
> From: "Mikael Vidstedt" <mikael.vidstedt at oracle.com>
> To: "Christine Flood" <chf at redhat.com>
> Cc: hotspot-dev at openjdk.java.net
> Sent: Wednesday, November 30, 2016 5:53:41 PM
> Subject: Re: Java heap size defaults when running with CGroups in Linux.
>
>
> 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