From fadf3944a68aaa143c8706489fc94e1824992a25 Mon Sep 17 00:00:00 2001 From: Jian Qiu Date: Sat, 28 Sep 2024 20:26:19 +0800 Subject: [PATCH] fix: host report ovs kmod version and ksm status (#21328) Co-authored-by: Qiu Jian --- pkg/hostman/hostinfo/hostinfo.go | 8 +++++++- pkg/hostman/hostinfo/hostinfohelper.go | 2 ++ pkg/lbagent/service.go | 21 +++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/hostman/hostinfo/hostinfo.go b/pkg/hostman/hostinfo/hostinfo.go index 29a1ddfb10..4a9d5651a0 100644 --- a/pkg/hostman/hostinfo/hostinfo.go +++ b/pkg/hostman/hostinfo/hostinfo.go @@ -731,10 +731,12 @@ func (h *SHostInfo) EnableKsm(sleepSec int) { sysutils.SetSysConfig("/sys/kernel/mm/ksm/run", "1") sysutils.SetSysConfig("/sys/kernel/mm/ksm/sleep_millisecs", fmt.Sprintf("%d", sleepSec*1000)) + h.sysinfo.EnableKsm = true } func (h *SHostInfo) DisableKsm() { sysutils.SetSysConfig("/sys/kernel/mm/ksm/run", "0") + h.sysinfo.EnableKsm = false } func (h *SHostInfo) PreventArpFlux() { @@ -1088,8 +1090,12 @@ func (h *SHostInfo) detectOvsKOVersion() error { lines := strings.Split(string(output), "\n") for i := 0; i < len(lines); i++ { line := lines[i] - if strings.HasPrefix(line, "version:") || strings.HasPrefix(line, "vermagic") { + if strings.HasPrefix(line, "version:") || strings.HasPrefix(line, "vermagic:") { log.Infof("kernel module openvswitch %s", line) + parts := strings.Split(line, ":") + if len(parts) > 1 { + h.sysinfo.OvsKmodVersion = strings.TrimSpace(parts[1]) + } return nil } } diff --git a/pkg/hostman/hostinfo/hostinfohelper.go b/pkg/hostman/hostinfo/hostinfohelper.go index ed053df8d0..b62a5b1c5a 100644 --- a/pkg/hostman/hostinfo/hostinfohelper.go +++ b/pkg/hostman/hostinfo/hostinfohelper.go @@ -325,6 +325,7 @@ type SSysInfo struct { KernelVersion string `json:"kernel_version"` QemuVersion string `json:"qemu_version"` OvsVersion string `json:"ovs_version"` + OvsKmodVersion string `json:"ovs_kmod_version"` KvmModule string `json:"kvm_module"` CpuModelName string `json:"cpu_model_name"` CpuMicrocode string `json:"cpu_microcode"` @@ -335,6 +336,7 @@ type SSysInfo struct { HugepageSizeKb int `json:"hugepage_size_kb"` HugepageNr *int `json:"hugepage_nr"` NodeHugepages []hostapi.HostNodeHugepageNr `json:"node_hugepages"` + EnableKsm bool `json:"enable_ksm"` Topology *hostapi.HostTopology `json:"topology"` CPUInfo *hostapi.HostCPUInfo `json:"cpu_info"` diff --git a/pkg/lbagent/service.go b/pkg/lbagent/service.go index 004d3f7bf8..68c26ba681 100644 --- a/pkg/lbagent/service.go +++ b/pkg/lbagent/service.go @@ -16,6 +16,7 @@ package lbagent import ( "context" + "fmt" "os" "os/signal" "sync" @@ -30,6 +31,7 @@ import ( "yunion.io/x/onecloud/pkg/util/fileutils2" "yunion.io/x/onecloud/pkg/util/ovnutils" "yunion.io/x/onecloud/pkg/util/procutils" + "yunion.io/x/onecloud/pkg/util/sysutils" ) func StartService() { @@ -76,6 +78,8 @@ func StartService() { } } + tuneSystem() + var haproxyHelper *HaproxyHelper var apiHelper *ApiHelper var haStateWatcher *HaStateWatcher @@ -122,3 +126,20 @@ func StartService() { wg.Wait() } } + +func tuneSystem() { + minMemKB := fmt.Sprintf("%d", 128*1024) + kv := map[string]string{ + "/proc/sys/vm/swappiness": "0", + "/proc/sys/vm/vfs_cache_pressure": "350", + "/proc/sys/vm/min_free_kbytes": minMemKB, + "/proc/sys/net/ipv4/tcp_mtu_probing": "2", + "/proc/sys/net/ipv4/neigh/default/gc_thresh1": "1024", + "/proc/sys/net/ipv4/neigh/default/gc_thresh2": "4096", + "/proc/sys/net/ipv4/neigh/default/gc_thresh3": "8192", + "/proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal": "1", + } + for k, v := range kv { + sysutils.SetSysConfig(k, v) + } +}