diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-06-01 11:59:08 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-06-01 11:59:08 +0000 |
commit | 2247bb7cd3e28adc2a41b3b1ffd22d13f63121a3 (patch) | |
tree | 7e53912f684fe957825ae001516782bfd0fbac6b /client/go | |
parent | 836ef7c6cbbcd9bbea321f459ea26954b3dd9c9c (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.go | 1 | ||||
-rw-r--r-- | client/go/internal/admin/vespa-wrapper/services/tuning.go | 30 |
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) + } + } +} |