From ea7d896f411415d3136926c4940244063a68675e Mon Sep 17 00:00:00 2001 From: Suozz <972016509@qq.com> Date: Fri, 26 Jan 2024 17:08:36 +0800 Subject: [PATCH] feature: sync parent cgroup for yarn (#68) Signed-off-by: suozengzeng Co-authored-by: suozengzeng --- pkg/copilot-agent/nm/nm.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pkg/copilot-agent/nm/nm.go b/pkg/copilot-agent/nm/nm.go index 0511917d..434aa9e8 100644 --- a/pkg/copilot-agent/nm/nm.go +++ b/pkg/copilot-agent/nm/nm.go @@ -110,6 +110,7 @@ func (n *NodeMangerOperator) syncMemoryCgroup(stop <-chan struct{}) error { case <-n.ticker.C: n.syncNoneProcCgroup() n.syncAllCgroup() + _ = n.syncParentCgroup() case <-n.nmTicker.C: n.syncNMEndpoint() case <-stop: @@ -189,6 +190,30 @@ func (n *NodeMangerOperator) syncAllCgroup() { } } +func (n *NodeMangerOperator) syncParentCgroup() error { + containers, err := n.ListContainers() + if err != nil { + klog.Error(err) + return err + } + var allCpuShare int + for _, con := range containers.Containers.Items { + if con.IsFinalState() { + continue + } + allCpuShare += con.TotalVCoresNeeded * 1024 + } + if allCpuShare > 0 { + cpuPath := n.GenerateCgroupFullPath(system.CgroupCPUDir) + _, err = system.CommonFileWriteIfDifferent(filepath.Join(cpuPath, system.CPUSharesName), strconv.Itoa(allCpuShare)) + if err != nil { + klog.Errorf("fail to set cpu share for %s: %s", cpuPath, err.Error()) + return err + } + } + return nil +} + func (n *NodeMangerOperator) removeMemoryCgroup(fileName string) { klog.V(5).Infof("receive file delete event %s", fileName) basename := filepath.Base(fileName)