From 6bd25c20c3f8df77aece241ec393280ef176d1ca Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Wed, 6 May 2020 16:10:47 -0500 Subject: [PATCH] Aligned with openj9 branch #521 --- Dockerfile | 2 +- README.md | 8 ++++++++ start-minecraftFinalSetup | 17 +++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 92cc6f8b..ae68f55f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -66,7 +66,7 @@ WORKDIR /data ENTRYPOINT [ "/start" ] ENV UID=1000 GID=1000 \ - JVM_XX_OPTS="-XX:+UseG1GC" MEMORY="1G" \ + MEMORY="1G" \ TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED SPONGEBRANCH=STABLE SPONGEVERSION= FABRICVERSION=LATEST LEVEL=world \ PVP=true DIFFICULTY=easy ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \ LEVEL_TYPE=DEFAULT SERVER_PORT=25565 ONLINE_MODE=TRUE SERVER_NAME="Dedicated Server" \ diff --git a/README.md b/README.md index 13e2a4d1..43bb7d3b 100644 --- a/README.md +++ b/README.md @@ -1077,6 +1077,14 @@ via a `JVM_XX_OPTS` environment variable. For some cases, if e.g. after removing mods, it could be necessary to startup minecraft with an additional `-D` parameter like `-Dfml.queryResult=confirm`. To address this you can use the environment variable `JVM_DD_OPTS`, which builds the params from a given list of values separated by space, but without the `-D` prefix. To make things running under systems (e.g. Plesk), which doesn't allow `=` inside values, a `:` (colon) could be used instead. The upper example would look like this: `JVM_DD_OPTS=fml.queryResult:confirm`, and will be converted to `-Dfml.queryResult=confirm`. +The container uses [OpenJ9](https://www.eclipse.org/openj9/docs) and a couple of J9 options are +simplified by environment variables: + +- `-e TUNE_VIRTUALIZED=TRUE` : enables the option to + [optimize for virtualized environments](https://www.eclipse.org/openj9/docs/xtunevirtualized/) +- `-e TUNE_NURSERY_SIZES=TRUE` : configures nursery sizes where the initial size is 50% + of the `MAX_MEMORY` and the max size is 80%. + ### Enable Remote JMX for Profiling To enable remote JMX, such as for profiling with VisualVM or JMC, add the environment variable `ENABLE_JMX=true` and add a port forwarding of TCP port 7091, such as: diff --git a/start-minecraftFinalSetup b/start-minecraftFinalSetup index c17ce18c..e05fc018 100644 --- a/start-minecraftFinalSetup +++ b/start-minecraftFinalSetup @@ -100,6 +100,23 @@ if [ -n "$JVM_DD_OPTS" ]; then done fi +if isTrue ${TUNE_VIRTUALIZED}; then + JVM_XX_OPTS="${JVM_XX_OPTS} -Xtune:virtualized" +fi + +if isTrue ${TUNE_NURSERY_SIZES}; then + case ${MAX_MEMORY^^} in + *G) + MAX_MEMORY_MB=$(( ${MAX_MEMORY%?} * 1024 )) ;; + *M) + MAX_MEMORY_MB=${MAX_MEMORY%?} ;; + esac + + NURSERY_MINIMUM=$(( ${MAX_MEMORY_MB} / 2 )) + NURSERY_MAXIMUM=$(( ${MAX_MEMORY_MB} * 4/5 )) + JVM_XX_OPTS="${JVM_XX_OPTS} -Xmns${NURSERY_MINIMUM}M -Xmnx${NURSERY_MAXIMUM}M" +fi + if isTrue ${ENABLE_JMX}; then : ${JMX_HOST:=0.0.0.0} : ${JMX_PORT:=7091}