summaryrefslogtreecommitdiffstats
path: root/vespabase
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-06-08 15:08:39 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-06-08 15:08:39 +0000
commitc13a435a8ee30ab46d2cdae38504446e794dec7e (patch)
tree628d96c00d082550e257f464392a695c911cfabd /vespabase
parent26c06870f4d39e5a74bc32c17f2c88a14d23ca50 (diff)
Only enable -XX:+UseTransparentHugePages if heap is at least 2x hugepage size.
Diffstat (limited to 'vespabase')
-rwxr-xr-xvespabase/src/common-env.sh29
1 files changed, 29 insertions, 0 deletions
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