aboutsummaryrefslogtreecommitdiffstats
path: root/client/go
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-06-01 11:59:08 +0000
committerArne Juul <arnej@yahooinc.com>2023-06-01 11:59:08 +0000
commit2247bb7cd3e28adc2a41b3b1ffd22d13f63121a3 (patch)
tree7e53912f684fe957825ae001516782bfd0fbac6b /client/go
parent836ef7c6cbbcd9bbea321f459ea26954b3dd9c9c (diff)
try increasing vm.max_map_count if it was too low
Diffstat (limited to 'client/go')
-rw-r--r--client/go/internal/admin/vespa-wrapper/services/start.go1
-rw-r--r--client/go/internal/admin/vespa-wrapper/services/tuning.go30
2 files changed, 31 insertions, 0 deletions
diff --git a/client/go/internal/admin/vespa-wrapper/services/start.go b/client/go/internal/admin/vespa-wrapper/services/start.go
index f47d99714f1..5e17ddb8c8d 100644
--- a/client/go/internal/admin/vespa-wrapper/services/start.go
+++ b/client/go/internal/admin/vespa-wrapper/services/start.go
@@ -54,6 +54,7 @@ func VespaStartServices() int {
vespa.RunPreStart()
trace.Debug("prestart ok")
util.TuneResourceLimits()
+ increase_vm_max_map_count()
trace.Debug("resource limits ok")
checkjava()
trace.Debug("java ok")
diff --git a/client/go/internal/admin/vespa-wrapper/services/tuning.go b/client/go/internal/admin/vespa-wrapper/services/tuning.go
index f922495812f..11b4030c4bb 100644
--- a/client/go/internal/admin/vespa-wrapper/services/tuning.go
+++ b/client/go/internal/admin/vespa-wrapper/services/tuning.go
@@ -6,6 +6,8 @@ package services
import (
"fmt"
"os"
+ "strconv"
+ "strings"
"github.com/vespa-engine/vespa/client/go/internal/admin/trace"
)
@@ -16,6 +18,7 @@ const (
TRANSPARENT_HUGEPAGE_DEFRAG = "/sys/kernel/mm/transparent_hugepage/defrag"
TRANSPARENT_HUGEPAGE_KH_DEFRAG = "/sys/kernel/mm/transparent_hugepage/khugepaged/defrag"
ZONE_RECLAIM_CTL = "/proc/sys/vm/zone_reclaim_mode"
+ VM_MAX_MAP_COUNT = "/proc/sys/vm/max_map_count"
)
func maybeEcho(fileName, toWrite string) bool {
@@ -49,3 +52,30 @@ func drop_caches() {
trace.Debug("dropped caches")
}
}
+
+func increase_vm_max_map_count() {
+ const need_minimum = 262144
+ var min_as_text string = strconv.Itoa(need_minimum)
+ const name = "vm.max_map_count"
+ trace.Debug("Checking: " + VM_MAX_MAP_COUNT)
+ data, err := os.ReadFile(VM_MAX_MAP_COUNT)
+ if err != nil {
+ trace.Info("Could not check", name, " - assuming it is OK and proceeding")
+ return
+ }
+ line := strings.TrimSuffix(string(data), "\n")
+ qline := "[" + line + "]"
+ num, err := strconv.Atoi(line)
+ if err != nil || num <= 0 {
+ trace.Info("Bad data", qline, "checking", name, " - assuming it is OK and proceeding")
+ return
+ }
+ if num < need_minimum {
+ trace.Info("Too low", name, "["+line+"] - trying to increase it to", min_as_text)
+ if maybeEcho(VM_MAX_MAP_COUNT, min_as_text) {
+ trace.Debug("Increased:", name)
+ } else {
+ trace.Warning("Could not increase", name, "- current value", qline, "too low, should be at least", min_as_text)
+ }
+ }
+}