summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfig-proxy/src/main/sh/vespa-config-ctl.sh7
-rwxr-xr-xconfigserver/src/main/sh/start-configserver9
-rwxr-xr-xcontainer-disc/src/main/sh/vespa-start-container-daemon.sh2
-rwxr-xr-xlogserver/bin/logserver-start.sh4
-rwxr-xr-xstandalone-container/src/main/sh/standalone-container.sh9
-rwxr-xr-xvespabase/src/common-env.sh29
6 files changed, 53 insertions, 7 deletions
diff --git a/config-proxy/src/main/sh/vespa-config-ctl.sh b/config-proxy/src/main/sh/vespa-config-ctl.sh
index 8f2e6a44563..1fa7e31de14 100755
--- a/config-proxy/src/main/sh/vespa-config-ctl.sh
+++ b/config-proxy/src/main/sh/vespa-config-ctl.sh
@@ -109,7 +109,12 @@ case $1 in
nohup nice sbin/vespa-retention-enforcer > ${LOGDIR}/vre-start.log 2>&1 </dev/null &
configsources=`bin/vespa-print-default configservers_rpc`
userargs=$VESPA_CONFIGPROXY_JVMARGS
- jvmopts="-Xms32M -Xmx128M -XX:+PreserveFramePointer -XX:+UseTransparentHugePages -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=448 -XX:MaxJavaStackTraceDepth=1000 -XX:-OmitStackTraceInFastThrow"
+ # Note that the hardcoded memory Xmx=128 migh be overriden in VESPA_CONFIGPROXY_JVMARGS,
+ # hence rendering get_jvm_hugepage_settings incorrect, but it is better than not.
+ # TODO Better way of extracting heap size arguments.
+ heap_min=32
+ heap_max=128
+ jvmopts="-Xms$(heap_min)M -Xmx$(heap_max)M -XX:+PreserveFramePointer $(get_jvm_hugepage_settings $heap_max) -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=448 -XX:MaxJavaStackTraceDepth=1000 -XX:-OmitStackTraceInFastThrow"
VESPA_SERVICE_NAME=configproxy
export VESPA_SERVICE_NAME
diff --git a/configserver/src/main/sh/start-configserver b/configserver/src/main/sh/start-configserver
index 6cf668e346a..3f02ff1cc27 100755
--- a/configserver/src/main/sh/start-configserver
+++ b/configserver/src/main/sh/start-configserver
@@ -161,10 +161,15 @@ rm -f $cfpfile
vespa-run-as-vespa-user sh -c "printenv > $cfpfile"
fixddir $bundlecachedir
+# Note that the hardcoded memory Xmx=2048 migh be overridden by jvmargs,
+# hence rendering get_jvm_hugepage_settings incorrect, but it is better than not.
+# TODO Better way of extracting heap size arguments.
+heap_min=128
+heap_max=2048
vespa-run-as-vespa-user vespa-runserver -s ${VESPA_SERVICE_NAME} -r 30 -p $pidfile -- \
java \
- -Xms128m -Xmx2048m \
- -XX:+UseTransparentHugePages \
+ -Xms$(heap_min)m -Xmx$(heap_max)m \
+ $(get_jvm_hugepage_settings $heap_max) \
-XX:+PreserveFramePointer \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath="${VESPA_HOME}/var/crash" \
diff --git a/container-disc/src/main/sh/vespa-start-container-daemon.sh b/container-disc/src/main/sh/vespa-start-container-daemon.sh
index 76d3f5e3c68..b27e02b6c23 100755
--- a/container-disc/src/main/sh/vespa-start-container-daemon.sh
+++ b/container-disc/src/main/sh/vespa-start-container-daemon.sh
@@ -174,7 +174,7 @@ configure_memory() {
memory_options="-Xms${jvm_minHeapsize}m -Xmx${jvm_heapsize}m"
memory_options="${memory_options} -XX:ThreadStackSize=${jvm_stacksize}"
memory_options="${memory_options} -XX:MaxDirectMemorySize=${maxDirectMemorySize}m"
- memory_options="${memory_options} -XX:+UseTransparentHugePages"
+ memory_options="${memory_options} $(get_jvm_hugepage_settings $jvm_heapsize)"
if ((jvm_compressedClassSpaceSize != 0)); then
memory_options="${memory_options} -XX:CompressedClassSpaceSize=${jvm_compressedClassSpaceSize}m"
diff --git a/logserver/bin/logserver-start.sh b/logserver/bin/logserver-start.sh
index 02efda95798..e478e457470 100755
--- a/logserver/bin/logserver-start.sh
+++ b/logserver/bin/logserver-start.sh
@@ -78,7 +78,9 @@ ROOT=${VESPA_HOME%/}
export ROOT
cd $ROOT || { echo "Cannot cd to $ROOT" 1>&2; exit 1; }
-addopts="-server -Xms32m -Xmx256m -XX:+PreserveFramePointer -XX:+UseTransparentHugePages -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=448 -XX:MaxJavaStackTraceDepth=1000 -XX:ActiveProcessorCount=2 -XX:-OmitStackTraceInFastThrow -Djava.io.tmpdir=${VESPA_HOME}/tmp"
+heap_min=32
+heap_max=256
+addopts="-server -Xms$(heap_min)m -Xmx$(heap_max)m -XX:+PreserveFramePointer $(get_jvm_hugepage_settings $heap_max) -XX:CompressedClassSpaceSize=32m -XX:MaxDirectMemorySize=32m -XX:ThreadStackSize=448 -XX:MaxJavaStackTraceDepth=1000 -XX:ActiveProcessorCount=2 -XX:-OmitStackTraceInFastThrow -Djava.io.tmpdir=${VESPA_HOME}/tmp"
oomopt="-XX:+ExitOnOutOfMemoryError"
diff --git a/standalone-container/src/main/sh/standalone-container.sh b/standalone-container/src/main/sh/standalone-container.sh
index bee4c06c38d..3542ad3e540 100755
--- a/standalone-container/src/main/sh/standalone-container.sh
+++ b/standalone-container/src/main/sh/standalone-container.sh
@@ -167,10 +167,15 @@ StartCommand() {
FixDataDirectory "$bundlecachedir"
FixDataDirectory "$VESPA_HOME/var/crash"
+ # Note that the hardcoded memory Xmx=2048 migh be overridden by jvm_arguments,
+ # hence rendering get_jvm_hugepage_settings incorrect, but it is better than not.
+ # TODO Better way of extracting heap size arguments.
+ heap_min=128
+ heap_max=2048
java \
- -Xms128m -Xmx2048m \
+ -Xms$(heap_min)m -Xmx$(heap_max)m \
-XX:+PreserveFramePointer \
- -XX:+UseTransparentHugePages \
+ $(get_jvm_hugepage_settings $heap_max) \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath="$VESPA_HOME/var/crash" \
-XX:+ExitOnOutOfMemoryError \
diff --git a/vespabase/src/common-env.sh b/vespabase/src/common-env.sh
index 7268a0a7edc..7b812d40fec 100755
--- a/vespabase/src/common-env.sh
+++ b/vespabase/src/common-env.sh
@@ -129,6 +129,35 @@ optionally_reduce_base_frequency() {
fi
}
+get_hugepage_size_mb() {
+ while read -r name size rest
+ do
+ if [[ "$name" =~ ^Hugepagesize:$ ]]
+ then
+ hugepagesize="$size"
+ unit="${rest,,}"
+ break
+ fi
+ done < /proc/meminfo
+ if [[ "$unit" == "kb" ]]; then
+ hugepage_size_mb=$(($hugepagesize / 1024))
+ else
+ echo "Failed extracting hugepage size from /proc/meminfo. Unknown unit($unit)"
+ exit 1
+ fi
+ OUT=$hugepage_size_mb
+}
+
+get_jvm_hugepage_settings() {
+ local heap_mb="$1"
+ get_hugepage_size_mb
+ sz_mb=$OUT
+ if (($sz_mb * 2 < $heap_mb)); then
+ options=" -XX:+UseTransparentHugePages"
+ fi
+ echo "$options"
+}
+
populate_environment
export LD_LIBRARY_PATH=$VESPA_HOME/lib64