[8u] RFR: 8226575: OperatingSystemMXBean should be made container aware

Severin Gehwolf sgehwolf at redhat.com
Mon Jul 20 11:47:02 UTC 2020


Hi Andrey,

On Fri, 2020-07-17 at 21:44 +0300, Andrey Petushkov wrote:
> Hi Severin,
> 
> The code being backported seem to have a bug and will result in a
> regression if
> being integrated.

OK. Do you have any experience on a ballpark number as to how many
systems this would affect? Is this a common config?

> The problem is that, to my understanding it's legal that only some of known
> controllers are mounted (at least man says they can be mounted
> individually).
> This creates a situation that Metrics gets "active" and populated with
> some of
> SubSystems, but not all. As a result OperatingSystemImpl considers
> containerMetrics
> available and uses it as a source. The SubSystem code is written the way
> that it
> returns 0 for any value if a respective subsystem is missing. At the
> same time
> OperatingSystemImpl typically uses >=0 as a sanity check of a value
> returned from Metrics.
> Effectively preventing from falling back to native implementation for
> the actual value
> and returning 0 instead of actual value
> 
> The problem actually exhibited by GetTotalPhysicalMemorySize test ran on
> Raspbian Stretch
> which happen to have cgroup fs but not /sys/fs/cgroup/memory

Thanks for the heads-up. A couple of questions:

 * Note that this has changed in JDK 15 where unavailable files should
   return -1 (over 0) in case of missing crgoup files. Have you tested
   JDK 15 by any chance?
 * Do you see this behaviour in a container or also outside?

> That's not the problem of a backport and of course should be discussed
> with upstream
> developers. It just happened that we've found it with a backport so
> letting you know

Yes, agreed. It seems an issue with the cgroups Metrics infra in older
JDKs. Do you mind creating a bug for this issue?

Thanks,
Severin

> Regards,
> Andrey
> 
> On 17.07.2020 17:07, Severin Gehwolf wrote:
> > Hi,
> > 
> > Please review this OpenJDK 8u backport for OperatingSystemMXBean's
> > container awareness which has been backported to Oracle JDK (parity
> > bug). This backport depends on JDK-8203357[1] for Metrics.java which is
> > being used in this patch.
> > 
> > Changes as compared to the JDK 11 patch were:
> > 
> >  * SubSystem.java: 8217338: [Containers] Improve systemd slice memory
> >    limit support not being there => getLongValueMatchingLine() missing
> >    => dropped
> >  * OperatingSystemImpl.java: Introduced Java methods which internally
> >    call the native methods. Renamed native methods to <oldmethod-name>0
> >  * Tests were actually done to the hotspot code in later JDKs, thus,
> >    for this backport the tests are in the hotspot portion of the webrev
> >    (separate repo).
> >  * Other than that, it's just the native bits which are in different
> >    files in JDK 8.
> > 
> > Bug: https://bugs.openjdk.java.net/browse/JDK-8226575
> > webrev: http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8226575/jdk8/01/
> > CSR: https://bugs.openjdk.java.net/browse/JDK-8248804
> > 
> > Testing: Included docker tests on Linux x86_64. jdk_management tests and
> > tier 1 tests. No regressions noted.
> > 
> > If somebody could test this on Windows/Mac, I'd appreciate it.
> > 
> > Thanks,
> > Severin
> > 
> > [1] http://mail.openjdk.java.net/pipermail/jdk8u-dev/2020-July/012164.html
> 
> 



More information about the jdk8u-dev mailing list