-
Bug
-
Resolution: Fixed
-
P3
-
21
-
b11
-
generic
-
linux
# podman run --rm -ti [...] --memory=200M --memory-swap=250M fedora:37
Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[root@dc3a44d5100a /]# cd /testclasses/
[root@dc3a44d5100a testclasses]# /opt/jdk/bin/java -Xlog:os+container=trace -Xbootclasspath/a:whitebox.jar -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI PrintContainerInfo | grep os,container | grep -A1 memsw.limit_in_bytes
[0.099s][trace][os,container] Path to /memory.memsw.limit_in_bytes is /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes
[0.099s][debug][os,container] Open of file /sys/fs/cgroup/memory/memory.memsw.limit_in_bytes failed, No such file or directory
[0.099s][trace][os,container] Memory and Swap Limit is: 18446744073709551614
It also shows up via VM.info or hs_err files like so:
[root@dc3a44d5100a testclasses]# /opt/jdk/bin/java -Xbootclasspath/a:whitebox.jar -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI PrintContainerInfo | grep -A20 cgroup
container (cgroup) information:
container_type: cgroupv1
cpu_cpuset_cpus: 0-3
cpu_memory_nodes: 0
active_processor_count: 4
cpu_quota: no quota
cpu_period: 100000
cpu_shares: no shares
memory_limit_in_bytes: 204800 k
memory_and_swap_limit_in_bytes: not supported
memory_soft_limit_in_bytes: unlimited
memory_usage_in_bytes: 28504 k
memory_max_usage_in_bytes: 28908 k
kernel_memory_usage_in_bytes: 1196 k
kernel_memory_max_usage_in_bytes: unlimited
kernel_memory_limit_in_bytes: 1324 k
maximum number of tasks: 2048
current number of tasks: 15
KVM virtualization detected
Steal ticks since vm start: 0
Steal ticks percentage since vm start: 0.000
These:
memory_limit_in_bytes: 204800 k
memory_and_swap_limit_in_bytes: not supported
Should be:
memory_limit_in_bytes: 204800 k
memory_and_swap_limit_in_bytes: 204800 k
# cat /proc/cmdline | grep swapaccount
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.19.7-300.fc37.x86_64 root=UUID=fcdabdd6-70cf-4a94-905d-86c966fed17d ro rootflags=subvol=root rhgb quiet systemd.unified_cgroup_hierarchy=0 swapaccount=0
Comparing this to the java level which we can see with -XshowSettings:system we see:
# /opt/jdk/bin/java -XshowSettings:system -version
Operating System Metrics:
Provider: cgroupv1
Effective CPU Count: 4
CPU Period: 100000us
CPU Quota: -1
CPU Shares: -1
List of Processors, 4 total:
0 1 2 3
List of Effective Processors, 4 total:
0 1 2 3
List of Memory Nodes, 1 total:
0
List of Available Memory Nodes, 1 total:
0
Memory Limit: 200.00M
Memory Soft Limit: Unlimited
Memory & Swap Limit: 200.00M
Maximum Processes Limit: 2048
openjdk version "21-internal" 2023-09-19
OpenJDK Runtime Environment (fastdebug build 21-internal-adhoc.sgehwolf.jdk-jdk)
OpenJDK 64-Bit Server VM (fastdebug build 21-internal-adhoc.sgehwolf.jdk-jdk, mixed mode, sharing)
I.e. memory and swap limit match. Both are 200.00M. I.e. no swap.
- relates to
-
JDK-8253797 [cgroups v2] Account for the fact that swap accounting is disabled on some systems
-
- Resolved
-
-
JDK-8300645 Handle julong values in logging of GET_CONTAINER_INFO macros
-
- Resolved
-
-
JDK-8250984 Memory Docker tests fail on some Linux kernels w/o cgroupv1 swap limit capabilities
-
- Resolved
-