...
1
2
3
4
19
20 package cm
21
22 import (
23 "strconv"
24 "strings"
25
26 v1 "k8s.io/api/core/v1"
27 "k8s.io/apimachinery/pkg/util/sets"
28 runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
29 )
30
31 func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error {
32 if i.cpuManager != nil {
33 allocatedCPUs := i.cpuManager.GetCPUAffinity(string(pod.UID), container.Name)
34 if !allocatedCPUs.IsEmpty() {
35 containerConfig.Linux.Resources.CpusetCpus = allocatedCPUs.String()
36 }
37 }
38
39 if i.memoryManager != nil {
40 numaNodes := i.memoryManager.GetMemoryNUMANodes(pod, container)
41 if numaNodes.Len() > 0 {
42 var affinity []string
43 for _, numaNode := range sets.List(numaNodes) {
44 affinity = append(affinity, strconv.Itoa(numaNode))
45 }
46 containerConfig.Linux.Resources.CpusetMems = strings.Join(affinity, ",")
47 }
48 }
49
50 return nil
51 }
52
View as plain text