RFR(XS): 8227317: [TESTBUG] jdk docker/TestDockerMemoryMetrics.java fails on systems w/o kernel memory accounting

mikhailo.seledtsov at oracle.com mikhailo.seledtsov at oracle.com
Wed Oct 23 22:26:14 UTC 2019


Hi Severin,

On 10/23/19 2:08 AM, Severin Gehwolf wrote:
> 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]?

I am not sure, could be either case. In any case, the tests should be 
able to handle this type of error.

Perhaps, I should change the message to simply echo the original message 
from the docker command: "Kernel memory accounting disabled, skipping 
test case",

that is w/o mentioning "on this system".


> 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. I will add the comment that you recommend.

Thank you,

Misha

>
> 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