From 838ed7feb53bddc9f6f65ed5d5e7377c288392fa Mon Sep 17 00:00:00 2001 From: mantuliu <240951888@qq.com> Date: Sat, 25 Mar 2023 17:08:36 +0800 Subject: [PATCH 1/2] Improve the performance of map usage Signed-off-by: mantuliu <240951888@qq.com> --- pkg/kubelet/cm/cpumanager/state/state_checkpoint.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go b/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go index 9297f23757d..fb93224f14a 100644 --- a/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go +++ b/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go @@ -147,7 +147,7 @@ func (sc *stateCheckpoint) storeState() error { assignments := sc.cache.GetCPUAssignments() for pod := range assignments { - checkpoint.Entries[pod] = make(map[string]string) + checkpoint.Entries[pod] = make(map[string]string, len(assignments[pod])) for container, cset := range assignments[pod] { checkpoint.Entries[pod][container] = cset.String() } From 37ea51fd56729c22728dbd9df385d8b01d5050f2 Mon Sep 17 00:00:00 2001 From: mantuliu <240951888@qq.com> Date: Sun, 16 Apr 2023 11:41:14 +0800 Subject: [PATCH 2/2] Improve the performance of map usage --- pkg/kubelet/cm/cpumanager/state/state.go | 4 ++-- pkg/kubelet/cm/cpumanager/state/state_checkpoint.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/cm/cpumanager/state/state.go b/pkg/kubelet/cm/cpumanager/state/state.go index a9bd906fcb2..2caf1845860 100644 --- a/pkg/kubelet/cm/cpumanager/state/state.go +++ b/pkg/kubelet/cm/cpumanager/state/state.go @@ -25,9 +25,9 @@ type ContainerCPUAssignments map[string]map[string]cpuset.CPUSet // Clone returns a copy of ContainerCPUAssignments func (as ContainerCPUAssignments) Clone() ContainerCPUAssignments { - ret := make(ContainerCPUAssignments) + ret := make(ContainerCPUAssignments, len(as)) for pod := range as { - ret[pod] = make(map[string]cpuset.CPUSet) + ret[pod] = make(map[string]cpuset.CPUSet, len(as[pod])) for container, cset := range as[pod] { ret[pod][container] = cset } diff --git a/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go b/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go index fb93224f14a..8918bc1d967 100644 --- a/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go +++ b/pkg/kubelet/cm/cpumanager/state/state_checkpoint.go @@ -121,7 +121,7 @@ func (sc *stateCheckpoint) restoreState() error { var tmpContainerCPUSet cpuset.CPUSet tmpAssignments := ContainerCPUAssignments{} for pod := range checkpointV2.Entries { - tmpAssignments[pod] = make(map[string]cpuset.CPUSet) + tmpAssignments[pod] = make(map[string]cpuset.CPUSet, len(checkpointV2.Entries[pod])) for container, cpuString := range checkpointV2.Entries[pod] { if tmpContainerCPUSet, err = cpuset.Parse(cpuString); err != nil { return fmt.Errorf("could not parse cpuset %q for container %q in pod %q: %v", cpuString, container, pod, err)