diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-09-29 09:24:30 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-09-29 09:24:30 +0000 |
commit | adab677d1e10eb1157ba3cf0b56a4fdfea0da0a7 (patch) | |
tree | 4a60dff976dfb2fca160a1023196b69a341a5da7 /client | |
parent | 6a1da6ee3568b6473373d837b70761593958094a (diff) |
minor fixes and refactoring
Diffstat (limited to 'client')
-rw-r--r-- | client/go/script-utils/startcbinary/common_env.go | 25 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/progspec.go | 16 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/startcbinary.go | 2 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/tuning.go | 47 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/vespamalloc.go | 1 |
5 files changed, 87 insertions, 4 deletions
diff --git a/client/go/script-utils/startcbinary/common_env.go b/client/go/script-utils/startcbinary/common_env.go index 0bd73d74cd4..44157b5d5a6 100644 --- a/client/go/script-utils/startcbinary/common_env.go +++ b/client/go/script-utils/startcbinary/common_env.go @@ -15,12 +15,15 @@ const ( ENV_LD_PRELOAD = "LD_PRELOAD" ENV_STD_THREAD_PREVENT_TRY_CATCH = "STD_THREAD_PREVENT_TRY_CATCH" ENV_GLIBCXX_FORCE_NEW = "GLIBCXX_FORCE_NEW" + ENV_JAVA_HOME = "JAVA_HOME" ENV_VESPA_AFFINITY_CPU_SOCKET = "VESPA_AFFINITY_CPU_SOCKET" ENV_VESPA_LOAD_CODE_AS_HUGEPAGES = "VESPA_LOAD_CODE_AS_HUGEPAGES" ENV_VESPA_MALLOC_HUGEPAGES = "VESPA_MALLOC_HUGEPAGES" ENV_VESPA_MALLOC_MADVISE_LIMIT = "VESPA_MALLOC_MADVISE_LIMIT" ENV_VESPA_NO_NUMACTL = "VESPA_NO_NUMACTL" + ENV_VESPA_TIMER_HZ = "VESPA_TIMER_HZ" + ENV_VESPA_USER = "VESPA_USER" ENV_VESPA_USE_HUGEPAGES = "VESPA_USE_HUGEPAGES" ENV_VESPA_USE_HUGEPAGES_LIST = "VESPA_USE_HUGEPAGES_LIST" ENV_VESPA_USE_MADVISE_LIST = "VESPA_USE_MADVISE_LIST" @@ -30,16 +33,16 @@ const ( ENV_VESPA_USE_VESPAMALLOC_D = "VESPA_USE_VESPAMALLOC_D" ENV_VESPA_USE_VESPAMALLOC_DST = "VESPA_USE_VESPAMALLOC_DST" ENV_VESPA_VALGRIND_OPT = "VESPA_VALGRIND_OPT" - ENV_VESPA_USER = "VESPA_USER" // backwards compatibility variables: - ENV_ROOT = "ROOT" ENV_HUGEPAGES_LIST = "HUGEPAGES_LIST" ENV_MADVISE_LIST = "MADVISE_LIST" ENV_NO_VESPAMALLOC_LIST = "NO_VESPAMALLOC_LIST" - ENV_VESPAMALLOC_LIST = "VESPAMALLOCD_LIST" - ENV_VESPAMALLOCD_LIST = "VESPAMALLOCD_LIST" + ENV_PATH = "PATH" + ENV_ROOT = "ROOT" ENV_VESPAMALLOCDST_LIST = "VESPAMALLOCDST_LIST" + ENV_VESPAMALLOCD_LIST = "VESPAMALLOCD_LIST" + ENV_VESPAMALLOC_LIST = "VESPAMALLOCD_LIST" ) func (spec *ProgSpec) considerFallback(varName, varValue string) { @@ -94,3 +97,17 @@ func (spec *ProgSpec) configureUseMadvise() { return } } + +func (spec *ProgSpec) configurePath() { + // Prefer newer gdb and pstack: + spec.prependPath("/opt/rh/gcc-toolset-11/root/usr/bin") + // Maven is needed for tester applications: + spec.prependPath(vespa.FindHome() + "/local/maven/bin") + spec.prependPath(vespa.FindHome() + "/bin64") + spec.prependPath(vespa.FindHome() + "/bin") + // how to find the "java" program? + // should be available in $VESPA_HOME/bin or JAVA_HOME + if javaHome := spec.getenv(ENV_JAVA_HOME); javaHome != "" { + spec.prependPath(javaHome + "/bin") + } +} diff --git a/client/go/script-utils/startcbinary/progspec.go b/client/go/script-utils/startcbinary/progspec.go index 6679a7e008f..a531a862afe 100644 --- a/client/go/script-utils/startcbinary/progspec.go +++ b/client/go/script-utils/startcbinary/progspec.go @@ -46,6 +46,22 @@ func (p *ProgSpec) getenv(k string) string { return os.Getenv(k) } +func (p *ProgSpec) prependPath(dirName string) { + pathList := []string{dirName} + oldPath := p.getenv(ENV_PATH) + if oldPath == "" { + oldPath = "/usr/bin" + } + for _, part := range strings.Split(oldPath, ":") { + if part != dirName { + pathList = append(pathList, part) + } + } + newPath := strings.Join(pathList, ":") + p.setenv(ENV_PATH, newPath) + os.Setenv(ENV_PATH, newPath) +} + func (p *ProgSpec) matchesListEnv(envVarName string) bool { return p.matchesListString(p.getenv(envVarName)) } diff --git a/client/go/script-utils/startcbinary/startcbinary.go b/client/go/script-utils/startcbinary/startcbinary.go index 56b0c9a1063..5098056ee93 100644 --- a/client/go/script-utils/startcbinary/startcbinary.go +++ b/client/go/script-utils/startcbinary/startcbinary.go @@ -13,6 +13,8 @@ import ( func startCbinary(spec ProgSpec) bool { spec.configureCommonEnv() + spec.configurePath() + spec.configureTuning() spec.configureValgrind() spec.configureNumaCtl() spec.configureHugePages() diff --git a/client/go/script-utils/startcbinary/tuning.go b/client/go/script-utils/startcbinary/tuning.go new file mode 100644 index 00000000000..e528d44e2d0 --- /dev/null +++ b/client/go/script-utils/startcbinary/tuning.go @@ -0,0 +1,47 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Author: arnej + +package startcbinary + +import ( + "os" + "strconv" + "strings" + + "github.com/vespa-engine/vespa/client/go/trace" + "github.com/vespa-engine/vespa/client/go/util" +) + +func (spec *ProgSpec) optionallyReduceBaseFrequency() { + if spec.getenv(ENV_VESPA_TIMER_HZ) == "" { + backticks := util.BackTicksIgnoreStderr + out, _ := backticks.Run("uname", "-r") + if strings.Contains(out, "linuxkit") { + trace.Trace("Running docker on macos. Reducing base frequency from 1000hz to 100hz due to high cost of sampling time. This will reduce timeout accuracy.") + spec.setenv(ENV_VESPA_TIMER_HZ, "100") + } + } +} + +func getThpSizeMb() int { + const fn = "/sys/kernel/mm/transparent_hugepage/hpage_pmd_size" + thp_size := 2 + line, err := os.ReadFile(fn) + if err == nil { + chomped := strings.TrimSuffix(string(line), "\n") + number, err := strconv.Atoi(chomped) + if err == nil { + thp_size = number / (1024 * 1024) + trace.Trace("thp_size", chomped, "=>", thp_size) + } else { + trace.Trace("no thp_size:", err) + } + } else { + trace.Trace("no thp_size:", err) + } + return thp_size +} + +func (spec *ProgSpec) configureTuning() { + spec.optionallyReduceBaseFrequency() +} diff --git a/client/go/script-utils/startcbinary/vespamalloc.go b/client/go/script-utils/startcbinary/vespamalloc.go index 64a0fdd1fdd..15b0fdc80bc 100644 --- a/client/go/script-utils/startcbinary/vespamalloc.go +++ b/client/go/script-utils/startcbinary/vespamalloc.go @@ -28,6 +28,7 @@ func (p *ProgSpec) configureVespaMalloc() { p.shouldUseVespaMalloc = false if p.matchesListEnv(ENV_VESPA_USE_NO_VESPAMALLOC) { trace.Trace("use no vespamalloc:", p.BaseName) + return } if p.shouldUseValgrind && !p.shouldUseCallgrind { trace.Trace("use valgrind, so no vespamalloc:", p.BaseName) |