Skip to content

Conversation

matmannion
Copy link

If the docker daemon is running on a host that supports control group v2, run-java.sh does not correctly calculate CPU share or memory limits because it only looks in the v1 location. This fixes this by looking in the correct locations for control group v2.

For example, with current master:

$ docker run -e JAVA_MAX_MEM_RATIO=80 --memory=2g --cpu-quota 1000000 -it openjdk:8 /bin/bash
root@edec19b1d93e:/# curl -s https://raw.githubusercontent.com/fabric8io-images/run-java-sh/master/fish-pepper/run-java-sh/fp-files/run-java.sh -o /usr/local/bin/run-java.sh
root@edec19b1d93e:/# chmod +x /usr/local/bin/run-java.sh
root@edec19b1d93e:/# run-java.sh options
-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError

vs with this change:

$ docker run -e JAVA_MAX_MEM_RATIO=80 --memory=2g --cpu-quota 1000000 -it openjdk:8 /bin/bash
root@39eca3625501:/# curl -s https://raw.githubusercontent.com/matmannion/run-java-sh/bugfix/cgroupv2/fish-pepper/run-java-sh/fp-files/run-java.sh -o /usr/local/bin/run-java.sh
root@39eca3625501:/# chmod +x /usr/local/bin/run-java.sh 
root@39eca3625501:/# run-java.sh options
-Xmx1638m -XX:ParallelGCThreads=10 -XX:ConcGCThreads=10 -Djava.util.concurrent.ForkJoinPool.common.parallelism=10 -XX:CICompilerCount=4 -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant