RFR: 8327946: containers/docker/TestJFREvents.java fails when host kernel config vm.swappiness=0 after JDK-8325139 [v4]

Severin Gehwolf sgehwolf at openjdk.org
Fri Apr 12 10:16:41 UTC 2024


On Fri, 12 Apr 2024 09:47:55 GMT, SendaoYan <syan at openjdk.org> wrote:

>> Hi,
>> 
>> According to the [docker document](https://docs.docker.com/config/containers/resource_constraints/#--memory-swappiness-details), the default value of --memory-swappiness is inherited from the host machine. So, when the the kernel config vm.swappiness=0 on the host machine, this testcase will fail, because of docker container can not use swap memory, the deafult value of --memory-swappiness is 0.
>> 
>> When the host kernel config "vm.swappiness = 0", In order to run this testcase passed , there are three methods:
>> 
>> 1. change `.shouldContain("totalSize = " + expectedTotalValue)` to `.shouldContain("totalSize = "`, which ignored the `expectedTotalValue`, because the `expectedTotalValue` could be 0(swap memroy is disable when --memory-swappiness=0) or could be 104857600(300MB-200MB=100MB), it depends on the host machine config `vm.swappiness`
>> 2. Change the default `--memory-swappiness` 0 to non-zero, such as 60.
>> 3. Change the host kernel config `vm.swappiness=0` to `vm.swappiness=60`. I think it's not a good idea.
>> 
>> Maybe the 2rd method seems more resonable.
>> 
>> 
>> Thanks,
>> -sendao
>
> SendaoYan has updated the pull request incrementally with one additional commit since the last revision:
> 
>   use Metrics.class get the CgroupV1 information

Better. I don't think we need to duplicate that much of the test. All we'd need to do is to add the `--memory-swappiness` option only if we are on cg v1:


                                          opts.addDockerOpts("--memory=" + memValueToSet)
                                                  .addDockerOpts("--memory-swap=" + swapValueToSet)
                                                  .addClassOptions("jdk.SwapSpace"));
                                          if (isCgroupV1) {
                                              // With Cgroupv1, The default memory-swappiness vaule is inherited from the host machine, which maybe 0
                                              opts.addDockerOpts("--memory-swappiness=60");
                                          }
                                          out = DockerTestUtils.dockerRunJava(opts);
                                          ...

-------------

PR Review: https://git.openjdk.org/jdk/pull/18225#pullrequestreview-1996412404


More information about the hotspot-dev mailing list