[Proposal] Better systemd slice memory limit support for OpenJDK

Severin Gehwolf sgehwolf at redhat.com
Thu Jan 17 16:16:24 UTC 2019


Hi Bob,

On Thu, 2019-01-17 at 10:59 -0500, Bob Vandette wrote:
> I checked a few systems I have access to and they all have use_hierarchy enabled.  When I set a memory
> limit the memory.stat hierarchical_memory_limit is identical to the memory.limit_in_bytes contents.

This seems to suggest they're running on older kernels. I know F29, F28
are affected.

> Do you have any idea why the kernel behavior changed?

No, not really. It could be with the "unified control group hierarchy"
work done in 3.16, but that's speculation:
https://lwn.net/Articles/601840/

Some more discussion with systemd/kernel folk is here:
https://bugzilla.redhat.com/show_bug.cgi?id=1599387

>   Is this documented behavior?

Yes. Though, in the self-proclaimed very outdated document:
https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt

Section 6, "Hierarchy support".

> I wouldn’t want to add a work-around for a transient kernel bug.

FWIW, cgroup-v1 is a legacy interface, so I doubt anything in that code
has a great chance of getting "fixed". So far there is no sign of
evidence what the expected behaviour should be.

Thanks,
Severin

> Bob.
> 
> 
> > On Jan 17, 2019, at 9:57 AM, Severin Gehwolf <sgehwolf at redhat.com> wrote:
> > 
> > Hi,
> > 
> > Current container awareness for OpenJDK seems to work for systemd
> > slices too, on some systems. To be precise, this works for older
> > Kernels e.g. 3.10. However, we've noticed that this breaks for newer
> > Kernel versions[1] such as the one in F28, currently 4.19.14-200. If
> > the container support would also look at hierarchical memory limits
> > exposed via memory.stat in the cgroup file system, it would again
> > work[2]. A proof of concept implementation is here:
> > 
> > http://cr.openjdk.java.net/~sgehwolf/webrevs/container-systemd-slice-01/webrev/
> > 
> > This enhancement wouldn't change any existing container memory limit
> > detection as it only kicks in when all other look-ups determined that
> > there is no limit in place. I've verified this by running Docker
> > container tests. The idea is to look for hierarchical_memory_limit and
> > hierarchical_memsw_limit lines in the memory.stat file of the cgroup
> > tree.
> > 
> > Would it be possible to consider such an enhancement upstream? If so,
> > I'll file a bug and propose it for review.
> > 
> > This issue has been originally raised here:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1509371
> > 
> > Thanks,
> > Severin
> > 
> > [1] Java process gets killed by oom killer.
> >    See: http://cr.openjdk.java.net/~sgehwolf/webrevs/container-systemd-slice-01/before.txt
> > [2] Java process throws OutOfMemoryError as expected.
> >    See: http://cr.openjdk.java.net/~sgehwolf/webrevs/container-systemd-slice-01/after.txt
> > 
> 
> 



More information about the hotspot-dev mailing list