RFR(XS): 8227317: [TESTBUG] jdk docker/TestDockerMemoryMetrics.java fails on systems w/o kernel memory accounting
Severin Gehwolf
sgehwolf at redhat.com
Wed Oct 23 09:08:46 UTC 2019
Hi Misha,
On Tue, 2019-10-22 at 11:50 -0700, mikhailo.seledtsov at oracle.com wrote:
> Please review this change that adds extra check for test case
> testKernelMemoryLimit(). If system does not support kernel memory
> accounting then verification for this test case is skipped.
>
> JBS: https://bugs.openjdk.java.net/browse/JDK-8227317
> Webrev: http://cr.openjdk.java.net/~mseledtsov/8227317.01/
123 OutputAnalyzer oa = DockerTestUtils.dockerRunJava(opts);
124 if (oa.getStderr().contains("kernel memory accounting disabled")) {
125 System.out.println("Kernel memory accounting disabled on this system, " +
126 "skipping the test case");
127 return;
128 }
129 oa.shouldHaveExitValue(0).shouldContain("TEST PASSED!!!");
130 }
>From what I understand this message comes from some container runtimes
(runc in this case), right? It seems to be a case where the system
potentially has kernel memory accounting, but the container runtime was
compiled without support for it. Have you checked whether systems where
the test fails also have 'cgroup.memory=nokmem' as kernel
commandline[1]?
In either case it seems diligent to add a comment prior the if.
Suggestion:
OutputAnalyzer oa = DockerTestUtils.dockerRunJava(opts);
// Some container runtimes (e.g. runc, docker 18.09)
// have been built without kernel memory accounting. In
// that case, the runtime issues a message on stderr saying
// so. Skip the test in that case.
if (oa.getStderr().contains("kernel memory accounting disabled")) {
Thanks,
Severin
[1] cat /proc/cmdline | grep cgroup.memory=nokmem
> Testing:
> 1. Ran the test on systems with disabled kernel memory
> accounting before and after the fix - fix works
> 2. Ran the test case 60 times on multiple Linux-x64 systems - no
> failures
>
>
> Thank you,
> Misha
>
More information about the hotspot-runtime-dev
mailing list