diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index 27cf99b88dd..c61067fffab 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -344,7 +344,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I cm.topologyManager.AddHintProvider(logger, cm.cpuManager) cm.memoryManager, err = memorymanager.NewManager( - context.TODO(), + logger, nodeConfig.MemoryManagerPolicy, machineInfo, cm.GetNodeAllocatableReservation(), @@ -997,7 +997,7 @@ func (cm *containerManagerImpl) GetMemory(podUID, containerName string) []*podre // This is tempporary as part of migration of memory manager to Contextual logging. // Direct context to be passed when container manager is migrated. - return containerMemoryFromBlock(cm.memoryManager.GetMemory(context.TODO(), podUID, containerName)) + return containerMemoryFromBlock(cm.memoryManager.GetMemory(podUID, containerName)) } func (cm *containerManagerImpl) GetAllocatableMemory() []*podresourcesapi.ContainerMemory { @@ -1007,7 +1007,7 @@ func (cm *containerManagerImpl) GetAllocatableMemory() []*podresourcesapi.Contai // This is tempporary as part of migration of memory manager to Contextual logging. // Direct context to be passed when container manager is migrated. - return containerMemoryFromBlock(cm.memoryManager.GetAllocatableMemory(context.TODO())) + return containerMemoryFromBlock(cm.memoryManager.GetAllocatableMemory()) } func (cm *containerManagerImpl) GetDynamicResources(pod *v1.Pod, container *v1.Container) []*podresourcesapi.DynamicResource { diff --git a/pkg/kubelet/cm/container_manager_stub.go b/pkg/kubelet/cm/container_manager_stub.go index f4cff89c60d..53d884acaa2 100644 --- a/pkg/kubelet/cm/container_manager_stub.go +++ b/pkg/kubelet/cm/container_manager_stub.go @@ -51,7 +51,7 @@ var _ ContainerManager = &containerManagerStub{} func (cm *containerManagerStub) Start(ctx context.Context, _ *v1.Node, _ ActivePodsFunc, _ GetNodeFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { klog.V(2).InfoS("Starting stub container manager") - cm.memoryManager = memorymanager.NewFakeManager(ctx) + cm.memoryManager = memorymanager.NewFakeManager(klog.FromContext(ctx)) cm.cpuManager = cpumanager.NewFakeManager(klog.FromContext(ctx)) return nil } diff --git a/pkg/kubelet/cm/container_manager_windows.go b/pkg/kubelet/cm/container_manager_windows.go index daa591d7853..b98020df108 100644 --- a/pkg/kubelet/cm/container_manager_windows.go +++ b/pkg/kubelet/cm/container_manager_windows.go @@ -141,7 +141,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I cm.topologyManager = topologymanager.NewFakeManager() cm.cpuManager = cpumanager.NewFakeManager(klog.TODO()) - cm.memoryManager = memorymanager.NewFakeManager(context.TODO()) + cm.memoryManager = memorymanager.NewFakeManager(klog.TODO()) if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.WindowsCPUAndMemoryAffinity) { klog.InfoS("Creating topology manager") @@ -174,7 +174,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I klog.InfoS("Creating memory manager") cm.memoryManager, err = memorymanager.NewManager( - context.TODO(), + klog.TODO(), nodeConfig.MemoryManagerPolicy, machineInfo, cm.GetNodeAllocatableReservation(), diff --git a/pkg/kubelet/cm/fake_container_manager.go b/pkg/kubelet/cm/fake_container_manager.go index d389ecee908..a178f37358e 100644 --- a/pkg/kubelet/cm/fake_container_manager.go +++ b/pkg/kubelet/cm/fake_container_manager.go @@ -56,7 +56,7 @@ func NewFakeContainerManager() *FakeContainerManager { return &FakeContainerManager{ PodContainerManager: NewFakePodContainerManager(), cpuManager: cpumanager.NewFakeManager(klog.TODO()), - memoryManager: memorymanager.NewFakeManager(context.TODO()), + memoryManager: memorymanager.NewFakeManager(klog.TODO()), } } diff --git a/pkg/kubelet/cm/internal_container_lifecycle.go b/pkg/kubelet/cm/internal_container_lifecycle.go index 27004f1adcd..fbf07b311c4 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle.go +++ b/pkg/kubelet/cm/internal_container_lifecycle.go @@ -17,8 +17,6 @@ limitations under the License. package cm import ( - "context" - v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" "k8s.io/klog/v2" @@ -46,7 +44,7 @@ func (i *internalContainerLifecycleImpl) PreStartContainer(pod *v1.Pod, containe } if i.memoryManager != nil { - i.memoryManager.AddContainer(context.TODO(), pod, container, containerID) + i.memoryManager.AddContainer(klog.TODO(), pod, container, containerID) } i.topologyManager.AddContainer(pod, container, containerID) diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go index 43e2717ccdd..ce6b62b8bc1 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go +++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go @@ -20,13 +20,13 @@ limitations under the License. package cm import ( - "context" "strconv" "strings" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" + "k8s.io/klog/v2" ) func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error { @@ -38,7 +38,7 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain } if i.memoryManager != nil { - numaNodes := i.memoryManager.GetMemoryNUMANodes(context.TODO(), pod, container) + numaNodes := i.memoryManager.GetMemoryNUMANodes(klog.TODO(), pod, container) if numaNodes.Len() > 0 { var affinity []string for _, numaNode := range sets.List(numaNodes) { diff --git a/pkg/kubelet/cm/internal_container_lifecycle_test.go b/pkg/kubelet/cm/internal_container_lifecycle_test.go index 1b2dd9b22c2..10dd4101c89 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle_test.go +++ b/pkg/kubelet/cm/internal_container_lifecycle_test.go @@ -17,7 +17,6 @@ limitations under the License. package cm import ( - "context" "testing" "github.com/go-logr/logr" @@ -42,7 +41,7 @@ type mockMemoryManager struct { memorymanager.Manager } -func (memoryManager *mockMemoryManager) AddContainer(context.Context, *v1.Pod, *v1.Container, string) { +func (memoryManager *mockMemoryManager) AddContainer(logr.Logger, *v1.Pod, *v1.Container, string) { memoryManager.called = true } diff --git a/pkg/kubelet/cm/internal_container_lifecycle_windows.go b/pkg/kubelet/cm/internal_container_lifecycle_windows.go index 35c7f48f95d..feb63089ee0 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle_windows.go +++ b/pkg/kubelet/cm/internal_container_lifecycle_windows.go @@ -20,7 +20,6 @@ limitations under the License. package cm import ( - "context" "fmt" v1 "k8s.io/api/core/v1" @@ -48,7 +47,7 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain var numaNodes sets.Set[int] if i.memoryManager != nil { - numaNodes = i.memoryManager.GetMemoryNUMANodes(context.TODO(), pod, container) + numaNodes = i.memoryManager.GetMemoryNUMANodes(klog.TODO(), pod, container) } // Gather all CPUs associated with the selected NUMA nodes diff --git a/pkg/kubelet/cm/memorymanager/fake_memory_manager.go b/pkg/kubelet/cm/memorymanager/fake_memory_manager.go index 6664730abcc..e589c78f573 100644 --- a/pkg/kubelet/cm/memorymanager/fake_memory_manager.go +++ b/pkg/kubelet/cm/memorymanager/fake_memory_manager.go @@ -39,46 +39,39 @@ func (m *fakeManager) Start(ctx context.Context, activePods ActivePodsFunc, sour return nil } -func (m *fakeManager) Policy(ctx context.Context) Policy { - logger := klog.FromContext(ctx) +func (m *fakeManager) Policy(logger klog.Logger) Policy { logger.Info("Policy()") - return NewPolicyNone(ctx) + return NewPolicyNone(logger) } func (m *fakeManager) Allocate(pod *v1.Pod, container *v1.Container) error { - ctx := context.TODO() - logger := klog.FromContext(ctx) + logger := klog.TODO() logger.Info("Allocate", "pod", klog.KObj(pod), "containerName", container.Name) return nil } -func (m *fakeManager) AddContainer(ctx context.Context, pod *v1.Pod, container *v1.Container, containerID string) { - logger := klog.FromContext(ctx) +func (m *fakeManager) AddContainer(logger klog.Logger, pod *v1.Pod, container *v1.Container, containerID string) { logger.Info("Add container", "pod", klog.KObj(pod), "containerName", container.Name, "containerID", containerID) } -func (m *fakeManager) GetMemoryNUMANodes(ctx context.Context, pod *v1.Pod, container *v1.Container) sets.Set[int] { - logger := klog.FromContext(ctx) +func (m *fakeManager) GetMemoryNUMANodes(logger klog.Logger, pod *v1.Pod, container *v1.Container) sets.Set[int] { logger.Info("Get MemoryNUMANodes", "pod", klog.KObj(pod), "containerName", container.Name) return nil } -func (m *fakeManager) RemoveContainer(ctx context.Context, containerID string) error { - logger := klog.FromContext(ctx) +func (m *fakeManager) RemoveContainer(logger klog.Logger, containerID string) error { logger.Info("RemoveContainer", "containerID", containerID) return nil } func (m *fakeManager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - ctx := context.TODO() - logger := klog.FromContext(ctx) + logger := klog.TODO() logger.Info("Get Topology Hints", "pod", klog.KObj(pod), "containerName", container.Name) return map[string][]topologymanager.TopologyHint{} } func (m *fakeManager) GetPodTopologyHints(pod *v1.Pod) map[string][]topologymanager.TopologyHint { - ctx := context.TODO() - logger := klog.FromContext(ctx) + logger := klog.TODO() logger.Info("Get Pod Topology Hints", "pod", klog.KObj(pod)) return map[string][]topologymanager.TopologyHint{} } @@ -88,24 +81,23 @@ func (m *fakeManager) State() state.Reader { } // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node -func (m *fakeManager) GetAllocatableMemory(ctx context.Context) []state.Block { - logger := klog.FromContext(ctx) +func (m *fakeManager) GetAllocatableMemory() []state.Block { + logger := klog.TODO() logger.Info("Get Allocatable Memory") return []state.Block{} } // GetMemory returns the memory allocated by a container from NUMA nodes -func (m *fakeManager) GetMemory(ctx context.Context, podUID, containerName string) []state.Block { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "podUID", podUID, "containerName", containerName) +func (m *fakeManager) GetMemory(podUID, containerName string) []state.Block { + logger := klog.LoggerWithValues(klog.TODO(), "podUID", podUID, "containerName", containerName) logger.Info("Get Memory") return []state.Block{} } // NewFakeManager creates empty/fake memory manager -func NewFakeManager(ctx context.Context) Manager { - logger := klog.LoggerWithName(klog.FromContext(ctx), "memory-mgr.fake") +func NewFakeManager(logger klog.Logger) Manager { + logger = klog.LoggerWithName(logger, "memory-mgr.fake") return &fakeManager{ - // logger: logger, state: state.NewMemoryState(logger), } } diff --git a/pkg/kubelet/cm/memorymanager/memory_manager.go b/pkg/kubelet/cm/memorymanager/memory_manager.go index 572f58599a0..585ebff1013 100644 --- a/pkg/kubelet/cm/memorymanager/memory_manager.go +++ b/pkg/kubelet/cm/memorymanager/memory_manager.go @@ -61,7 +61,7 @@ type Manager interface { // AddContainer adds the mapping between container ID to pod UID and the container name // The mapping used to remove the memory allocation during the container removal - AddContainer(ctx context.Context, p *v1.Pod, c *v1.Container, containerID string) + AddContainer(logger klog.Logger, p *v1.Pod, c *v1.Container, containerID string) // Allocate is called to pre-allocate memory resources during Pod admission. // This must be called at some point prior to the AddContainer() call for a container, e.g. at pod admission time. @@ -69,7 +69,7 @@ type Manager interface { // RemoveContainer is called after Kubelet decides to kill or delete a // container. After this call, any memory allocated to the container is freed. - RemoveContainer(ctx context.Context, containerID string) error + RemoveContainer(logger klog.Logger, containerID string) error // State returns a read-only interface to the internal memory manager state. State() state.Reader @@ -85,13 +85,13 @@ type Manager interface { GetPodTopologyHints(*v1.Pod) map[string][]topologymanager.TopologyHint // GetMemoryNUMANodes provides NUMA nodes that are used to allocate the container memory - GetMemoryNUMANodes(ctx context.Context, pod *v1.Pod, container *v1.Container) sets.Set[int] + GetMemoryNUMANodes(logger klog.Logger, pod *v1.Pod, container *v1.Container) sets.Set[int] // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node - GetAllocatableMemory(ctx context.Context) []state.Block + GetAllocatableMemory() []state.Block // GetMemory returns the memory allocated by a container from NUMA nodes - GetMemory(ctx context.Context, podUID, containerName string) []state.Block + GetMemory(podUID, containerName string) []state.Block } type manager struct { @@ -132,13 +132,13 @@ type manager struct { var _ Manager = &manager{} // NewManager returns new instance of the memory manager -func NewManager(ctx context.Context, policyName string, machineInfo *cadvisorapi.MachineInfo, nodeAllocatableReservation v1.ResourceList, reservedMemory []kubeletconfig.MemoryReservation, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { +func NewManager(logger klog.Logger, policyName string, machineInfo *cadvisorapi.MachineInfo, nodeAllocatableReservation v1.ResourceList, reservedMemory []kubeletconfig.MemoryReservation, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { var policy Policy switch policyType(policyName) { case policyTypeNone: - policy = NewPolicyNone(ctx) + policy = NewPolicyNone(logger) case PolicyTypeStatic: if runtime.GOOS == "windows" { @@ -150,7 +150,7 @@ func NewManager(ctx context.Context, policyName string, machineInfo *cadvisorapi return nil, err } - policy, err = NewPolicyStatic(ctx, machineInfo, systemReserved, affinity) + policy, err = NewPolicyStatic(logger, machineInfo, systemReserved, affinity) if err != nil { return nil, err } @@ -161,7 +161,7 @@ func NewManager(ctx context.Context, policyName string, machineInfo *cadvisorapi if err != nil { return nil, err } - policy, err = NewPolicyBestEffort(ctx, machineInfo, systemReserved, affinity) + policy, err = NewPolicyBestEffort(logger, machineInfo, systemReserved, affinity) if err != nil { return nil, err } @@ -198,20 +198,20 @@ func (m *manager) Start(ctx context.Context, activePods ActivePodsFunc, sourcesR } m.state = stateImpl - err = m.policy.Start(ctx, m.state) + err = m.policy.Start(logger, m.state) if err != nil { logger.Error(err, "Policy start error") return err } - m.allocatableMemory = m.policy.GetAllocatableMemory(ctx, m.state) + m.allocatableMemory = m.policy.GetAllocatableMemory(m.state) logger.V(4).Info("memorymanager started", "policy", m.policy.Name()) return nil } // AddContainer saves the value of requested memory for the guaranteed pod under the state and set memory affinity according to the topolgy manager -func (m *manager) AddContainer(ctx context.Context, pod *v1.Pod, container *v1.Container, containerID string) { +func (m *manager) AddContainer(logger klog.Logger, pod *v1.Pod, container *v1.Container, containerID string) { m.Lock() defer m.Unlock() @@ -234,13 +234,13 @@ func (m *manager) AddContainer(ctx context.Context, pod *v1.Pod, container *v1.C continue } - m.policyRemoveContainerByRef(string(pod.UID), initContainer.Name) + m.policyRemoveContainerByRef(logger, string(pod.UID), initContainer.Name) } } // GetMemoryNUMANodes provides NUMA nodes that used to allocate the container memory -func (m *manager) GetMemoryNUMANodes(ctx context.Context, pod *v1.Pod, container *v1.Container) sets.Set[int] { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "pod", klog.KObj(pod), "containerName", container.Name) +func (m *manager) GetMemoryNUMANodes(logger klog.Logger, pod *v1.Pod, container *v1.Container) sets.Set[int] { + logger = klog.LoggerWithValues(logger, "pod", klog.KObj(pod), "containerName", container.Name) // Get NUMA node affinity of blocks assigned to the container during Allocate() numaNodes := sets.New[int]() @@ -262,17 +262,14 @@ func (m *manager) GetMemoryNUMANodes(ctx context.Context, pod *v1.Pod, container // Allocate is called to pre-allocate memory resources during Pod admission. func (m *manager) Allocate(pod *v1.Pod, container *v1.Container) error { - // Garbage collect any stranded resources before allocation - ctx := context.TODO() - logger := klog.FromContext(ctx) - + logger := klog.TODO() m.removeStaleState(logger) m.Lock() defer m.Unlock() // Call down into the policy to assign this container memory if required. - if err := m.policy.Allocate(ctx, m.state, pod, container); err != nil { + if err := m.policy.Allocate(logger, m.state, pod, container); err != nil { logger.Error(err, "Allocate error", "pod", klog.KObj(pod), "containerName", container.Name) return err } @@ -280,8 +277,8 @@ func (m *manager) Allocate(pod *v1.Pod, container *v1.Container) error { } // RemoveContainer removes the container from the state -func (m *manager) RemoveContainer(ctx context.Context, containerID string) error { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "containerID", containerID) +func (m *manager) RemoveContainer(logger klog.Logger, containerID string) error { + logger = klog.LoggerWithValues(logger, "containerID", containerID) m.Lock() defer m.Unlock() @@ -293,7 +290,7 @@ func (m *manager) RemoveContainer(ctx context.Context, containerID string) error return nil } - m.policyRemoveContainerByRef(podUID, containerName) + m.policyRemoveContainerByRef(logger, podUID, containerName) return nil } @@ -311,7 +308,7 @@ func (m *manager) GetPodTopologyHints(pod *v1.Pod) map[string][]topologymanager. // Garbage collect any stranded resources before providing TopologyHints m.removeStaleState(klog.FromContext(ctx)) // Delegate to active policy - return m.policy.GetPodTopologyHints(context.TODO(), m.state, pod) + return m.policy.GetPodTopologyHints(klog.TODO(), m.state, pod) } // GetTopologyHints returns the topology hints for the topology manager @@ -319,7 +316,7 @@ func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[str // Garbage collect any stranded resources before providing TopologyHints m.removeStaleState(klog.TODO()) // Delegate to active policy - return m.policy.GetTopologyHints(context.TODO(), m.state, pod, container) + return m.policy.GetTopologyHints(klog.TODO(), m.state, pod, container) } // TODO: move the method to the upper level, to re-use it under the CPU and memory managers @@ -358,7 +355,7 @@ func (m *manager) removeStaleState(logger klog.Logger) { for containerName := range assignments[podUID] { if _, ok := activeContainers[podUID][containerName]; !ok { logger.V(2).Info("RemoveStaleState removing state", "podUID", podUID, "containerName", containerName) - m.policyRemoveContainerByRef(podUID, containerName) + m.policyRemoveContainerByRef(logger, podUID, containerName) } } } @@ -366,13 +363,13 @@ func (m *manager) removeStaleState(logger klog.Logger) { m.containerMap.Visit(func(podUID, containerName, containerID string) { if _, ok := activeContainers[podUID][containerName]; !ok { logger.V(2).Info("RemoveStaleState removing state", "podUID", podUID, "containerName", containerName) - m.policyRemoveContainerByRef(podUID, containerName) + m.policyRemoveContainerByRef(logger, podUID, containerName) } }) } -func (m *manager) policyRemoveContainerByRef(podUID string, containerName string) { - m.policy.RemoveContainer(context.TODO(), m.state, podUID, containerName) +func (m *manager) policyRemoveContainerByRef(logger klog.Logger, podUID string, containerName string) { + m.policy.RemoveContainer(logger, m.state, podUID, containerName) m.containerMap.RemoveByContainerRef(podUID, containerName) } @@ -470,11 +467,11 @@ func getSystemReservedMemory(machineInfo *cadvisorapi.MachineInfo, nodeAllocatab } // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node -func (m *manager) GetAllocatableMemory(ctx context.Context) []state.Block { +func (m *manager) GetAllocatableMemory() []state.Block { return m.allocatableMemory } // GetMemory returns the memory allocated by a container from NUMA nodes -func (m *manager) GetMemory(ctx context.Context, podUID, containerName string) []state.Block { +func (m *manager) GetMemory(podUID, containerName string) []state.Block { return m.state.GetMemoryBlocks(podUID, containerName) } diff --git a/pkg/kubelet/cm/memorymanager/memory_manager_test.go b/pkg/kubelet/cm/memorymanager/memory_manager_test.go index fa5a9aa4479..6844710fecd 100644 --- a/pkg/kubelet/cm/memorymanager/memory_manager_test.go +++ b/pkg/kubelet/cm/memorymanager/memory_manager_test.go @@ -27,6 +27,7 @@ import ( cadvisorapi "github.com/google/cadvisor/info/v1" "github.com/stretchr/testify/assert" + "k8s.io/klog/v2" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -71,17 +72,17 @@ type testMemoryManager struct { activePods []*v1.Pod } -func returnPolicyByName(ctx context.Context, testCase testMemoryManager) Policy { +func returnPolicyByName(logger klog.Logger, testCase testMemoryManager) Policy { switch testCase.policyName { case policyTypeMock: return &mockPolicy{ err: fmt.Errorf("fake reg error"), } case PolicyTypeStatic: - policy, _ := NewPolicyStatic(ctx, &testCase.machineInfo, testCase.reserved, topologymanager.NewFakeManager()) + policy, _ := NewPolicyStatic(logger, &testCase.machineInfo, testCase.reserved, topologymanager.NewFakeManager()) return policy case policyTypeNone: - return NewPolicyNone(ctx) + return NewPolicyNone(logger) } return nil } @@ -94,27 +95,27 @@ func (p *mockPolicy) Name() string { return string(policyTypeMock) } -func (p *mockPolicy) Start(context.Context, state.State) error { +func (p *mockPolicy) Start(klog.Logger, state.State) error { return p.err } -func (p *mockPolicy) Allocate(context.Context, state.State, *v1.Pod, *v1.Container) error { +func (p *mockPolicy) Allocate(klog.Logger, state.State, *v1.Pod, *v1.Container) error { return p.err } -func (p *mockPolicy) RemoveContainer(context.Context, state.State, string, string) { +func (p *mockPolicy) RemoveContainer(klog.Logger, state.State, string, string) { } -func (p *mockPolicy) GetTopologyHints(context.Context, state.State, *v1.Pod, *v1.Container) map[string][]topologymanager.TopologyHint { +func (p *mockPolicy) GetTopologyHints(klog.Logger, state.State, *v1.Pod, *v1.Container) map[string][]topologymanager.TopologyHint { return nil } -func (p *mockPolicy) GetPodTopologyHints(context.Context, state.State, *v1.Pod) map[string][]topologymanager.TopologyHint { +func (p *mockPolicy) GetPodTopologyHints(klog.Logger, state.State, *v1.Pod) map[string][]topologymanager.TopologyHint { return nil } // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node -func (p *mockPolicy) GetAllocatableMemory(context.Context, state.State) []state.Block { +func (p *mockPolicy) GetAllocatableMemory(state.State) []state.Block { return []state.Block{} } @@ -491,7 +492,7 @@ func TestGetSystemReservedMemory(t *testing.T) { } func TestRemoveStaleState(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) machineInfo := returnMachineInfo() testCases := []testMemoryManager{ { @@ -903,7 +904,7 @@ func TestRemoveStaleState(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.description, func(t *testing.T) { mgr := &manager{ - policy: returnPolicyByName(tCtx, testCase), + policy: returnPolicyByName(logger, testCase), state: state.NewMemoryState(logger), containerMap: containermap.NewContainerMap(), containerRuntime: mockRuntimeService{ @@ -931,7 +932,7 @@ func TestRemoveStaleState(t *testing.T) { } func TestAddContainer(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) machineInfo := returnMachineInfo() reserved := systemReservedMemory{ 0: map[v1.ResourceName]uint64{ @@ -1396,7 +1397,7 @@ func TestAddContainer(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.description, func(t *testing.T) { mgr := &manager{ - policy: returnPolicyByName(tCtx, testCase), + policy: returnPolicyByName(logger, testCase), state: state.NewMemoryState(logger), containerMap: containermap.NewContainerMap(), containerRuntime: mockRuntimeService{ @@ -1418,7 +1419,7 @@ func TestAddContainer(t *testing.T) { t.Errorf("Memory Manager Allocate() error (%v), expected error: %v, but got: %v", testCase.description, testCase.expectedAllocateError, err) } - mgr.AddContainer(tCtx, pod, container, "fakeID") + mgr.AddContainer(logger, pod, container, "fakeID") _, _, err = mgr.containerMap.GetContainerRef("fakeID") if !reflect.DeepEqual(err, testCase.expectedAddContainerError) { t.Errorf("Memory Manager AddContainer() error (%v), expected error: %v, but got: %v", @@ -1435,7 +1436,7 @@ func TestAddContainer(t *testing.T) { } func TestRemoveContainer(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) machineInfo := returnMachineInfo() reserved := systemReservedMemory{ 0: map[v1.ResourceName]uint64{ @@ -1873,7 +1874,7 @@ func TestRemoveContainer(t *testing.T) { iniContainerMap.Add("fakePod1", "fakeContainer1", "fakeID1") iniContainerMap.Add("fakePod1", "fakeContainer2", "fakeID2") mgr := &manager{ - policy: returnPolicyByName(tCtx, testCase), + policy: returnPolicyByName(logger, testCase), state: state.NewMemoryState(logger), containerMap: iniContainerMap, containerRuntime: mockRuntimeService{ @@ -1886,7 +1887,7 @@ func TestRemoveContainer(t *testing.T) { mgr.state.SetMemoryAssignments(testCase.assignments) mgr.state.SetMachineState(testCase.machineState) - err := mgr.RemoveContainer(tCtx, testCase.removeContainerID) + err := mgr.RemoveContainer(logger, testCase.removeContainerID) if !reflect.DeepEqual(err, testCase.expectedError) { t.Errorf("Memory Manager RemoveContainer() error (%v), expected error: %v, but got: %v", testCase.description, testCase.expectedError, err) @@ -1914,7 +1915,7 @@ func getPolicyNameForOs() policyType { } func TestNewManager(t *testing.T) { - tCtx := ktesting.Init(t) + logger, _ := ktesting.NewTestContext(t) machineInfo := returnMachineInfo() expectedReserved := systemReservedMemory{ 0: map[v1.ResourceName]uint64{ @@ -2006,7 +2007,7 @@ func TestNewManager(t *testing.T) { } defer os.RemoveAll(stateFileDirectory) - mgr, err := NewManager(tCtx, string(testCase.policyName), &testCase.machineInfo, testCase.nodeAllocatableReservation, testCase.systemReservedMemory, stateFileDirectory, testCase.affinity) + mgr, err := NewManager(logger, string(testCase.policyName), &testCase.machineInfo, testCase.nodeAllocatableReservation, testCase.systemReservedMemory, stateFileDirectory, testCase.affinity) if !reflect.DeepEqual(err, testCase.expectedError) { t.Errorf("Could not create the Memory Manager. Expected error: '%v', but got: '%v'", @@ -2036,7 +2037,7 @@ func TestNewManager(t *testing.T) { } func TestGetTopologyHints(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testMemoryManager{ { description: "Successful hint generation", @@ -2157,7 +2158,7 @@ func TestGetTopologyHints(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.description, func(t *testing.T) { mgr := &manager{ - policy: returnPolicyByName(tCtx, testCase), + policy: returnPolicyByName(logger, testCase), state: state.NewMemoryState(logger), containerMap: containermap.NewContainerMap(), containerRuntime: mockRuntimeService{ @@ -2182,7 +2183,7 @@ func TestGetTopologyHints(t *testing.T) { } func TestAllocateAndAddPodWithInitContainers(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testMemoryManager{ { description: "should remove init containers from the state file, once app container started", @@ -2335,7 +2336,7 @@ func TestAllocateAndAddPodWithInitContainers(t *testing.T) { t.Run(testCase.description, func(t *testing.T) { logger.Info("TestAllocateAndAddPodWithInitContainers", "name", testCase.description) mgr := &manager{ - policy: returnPolicyByName(tCtx, testCase), + policy: returnPolicyByName(logger, testCase), state: state.NewMemoryState(logger), containerMap: containermap.NewContainerMap(), containerRuntime: mockRuntimeService{ @@ -2366,12 +2367,12 @@ func TestAllocateAndAddPodWithInitContainers(t *testing.T) { // Calls AddContainer for init containers for i, initContainer := range testCase.podAllocate.Spec.InitContainers { - mgr.AddContainer(tCtx, testCase.podAllocate, &testCase.podAllocate.Spec.InitContainers[i], initContainer.Name) + mgr.AddContainer(logger, testCase.podAllocate, &testCase.podAllocate.Spec.InitContainers[i], initContainer.Name) } // Calls AddContainer for apps containers for i, appContainer := range testCase.podAllocate.Spec.Containers { - mgr.AddContainer(tCtx, testCase.podAllocate, &testCase.podAllocate.Spec.Containers[i], appContainer.Name) + mgr.AddContainer(logger, testCase.podAllocate, &testCase.podAllocate.Spec.Containers[i], appContainer.Name) } assignments := mgr.state.GetMemoryAssignments() diff --git a/pkg/kubelet/cm/memorymanager/policy.go b/pkg/kubelet/cm/memorymanager/policy.go index 69e79cdb7f2..3c17ec93c21 100644 --- a/pkg/kubelet/cm/memorymanager/policy.go +++ b/pkg/kubelet/cm/memorymanager/policy.go @@ -17,9 +17,8 @@ limitations under the License. package memorymanager import ( - "context" - v1 "k8s.io/api/core/v1" + "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/state" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" ) @@ -30,19 +29,19 @@ type policyType string // Policy implements logic for pod container to a memory assignment. type Policy interface { Name() string - Start(ctx context.Context, s state.State) error + Start(logger klog.Logger, s state.State) error // Allocate call is idempotent - Allocate(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) error + Allocate(logger klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) error // RemoveContainer call is idempotent - RemoveContainer(ctx context.Context, s state.State, podUID string, containerName string) + RemoveContainer(logger klog.Logger, s state.State, podUID string, containerName string) // GetTopologyHints implements the topologymanager.HintProvider Interface // and is consulted to achieve NUMA aware resource alignment among this // and other resource controllers. - GetTopologyHints(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint + GetTopologyHints(logger klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint // GetPodTopologyHints implements the topologymanager.HintProvider Interface // and is consulted to achieve NUMA aware resource alignment among this // and other resource controllers. - GetPodTopologyHints(ctx context.Context, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint + GetPodTopologyHints(logger klog.Logger, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node - GetAllocatableMemory(ctx context.Context, s state.State) []state.Block + GetAllocatableMemory(s state.State) []state.Block } diff --git a/pkg/kubelet/cm/memorymanager/policy_best_effort.go b/pkg/kubelet/cm/memorymanager/policy_best_effort.go index 76ca2c82608..53f5746d48d 100644 --- a/pkg/kubelet/cm/memorymanager/policy_best_effort.go +++ b/pkg/kubelet/cm/memorymanager/policy_best_effort.go @@ -17,8 +17,7 @@ limitations under the License. package memorymanager import ( - "context" - + "github.com/go-logr/logr" cadvisorapi "github.com/google/cadvisor/info/v1" v1 "k8s.io/api/core/v1" @@ -41,8 +40,8 @@ type bestEffortPolicy struct { var _ Policy = &bestEffortPolicy{} -func NewPolicyBestEffort(ctx context.Context, machineInfo *cadvisorapi.MachineInfo, reserved systemReservedMemory, affinity topologymanager.Store) (Policy, error) { - p, err := NewPolicyStatic(ctx, machineInfo, reserved, affinity) +func NewPolicyBestEffort(logger logr.Logger, machineInfo *cadvisorapi.MachineInfo, reserved systemReservedMemory, affinity topologymanager.Store) (Policy, error) { + p, err := NewPolicyStatic(logger, machineInfo, reserved, affinity) if err != nil { return nil, err @@ -57,26 +56,26 @@ func (p *bestEffortPolicy) Name() string { return string(policyTypeBestEffort) } -func (p *bestEffortPolicy) Start(ctx context.Context, s state.State) error { - return p.static.Start(ctx, s) +func (p *bestEffortPolicy) Start(logger logr.Logger, s state.State) error { + return p.static.Start(logger, s) } -func (p *bestEffortPolicy) Allocate(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) (rerr error) { - return p.static.Allocate(ctx, s, pod, container) +func (p *bestEffortPolicy) Allocate(logger logr.Logger, s state.State, pod *v1.Pod, container *v1.Container) (rerr error) { + return p.static.Allocate(logger, s, pod, container) } -func (p *bestEffortPolicy) RemoveContainer(ctx context.Context, s state.State, podUID string, containerName string) { - p.static.RemoveContainer(ctx, s, podUID, containerName) +func (p *bestEffortPolicy) RemoveContainer(logger logr.Logger, s state.State, podUID string, containerName string) { + p.static.RemoveContainer(logger, s, podUID, containerName) } -func (p *bestEffortPolicy) GetPodTopologyHints(ctx context.Context, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { - return p.static.GetPodTopologyHints(ctx, s, pod) +func (p *bestEffortPolicy) GetPodTopologyHints(logger logr.Logger, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { + return p.static.GetPodTopologyHints(logger, s, pod) } -func (p *bestEffortPolicy) GetTopologyHints(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - return p.static.GetTopologyHints(ctx, s, pod, container) +func (p *bestEffortPolicy) GetTopologyHints(logger logr.Logger, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { + return p.static.GetTopologyHints(logger, s, pod, container) } -func (p *bestEffortPolicy) GetAllocatableMemory(ctx context.Context, s state.State) []state.Block { - return p.static.GetAllocatableMemory(ctx, s) +func (p *bestEffortPolicy) GetAllocatableMemory(s state.State) []state.Block { + return p.static.GetAllocatableMemory(s) } diff --git a/pkg/kubelet/cm/memorymanager/policy_none.go b/pkg/kubelet/cm/memorymanager/policy_none.go index 5b821f7d234..ceb2d236d1f 100644 --- a/pkg/kubelet/cm/memorymanager/policy_none.go +++ b/pkg/kubelet/cm/memorymanager/policy_none.go @@ -17,8 +17,6 @@ limitations under the License. package memorymanager import ( - "context" - v1 "k8s.io/api/core/v1" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/state" @@ -34,7 +32,7 @@ type none struct{} var _ Policy = &none{} // NewPolicyNone returns new none policy instance -func NewPolicyNone(ctx context.Context) Policy { +func NewPolicyNone(logger klog.Logger) Policy { return &none{} } @@ -42,36 +40,35 @@ func (p *none) Name() string { return string(policyTypeNone) } -func (p *none) Start(ctx context.Context, s state.State) error { - logger := klog.FromContext(ctx) +func (p *none) Start(logger klog.Logger, s state.State) error { logger.Info("Start") return nil } // Allocate call is idempotent -func (p *none) Allocate(_ context.Context, s state.State, pod *v1.Pod, container *v1.Container) error { +func (p *none) Allocate(_ klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) error { return nil } // RemoveContainer call is idempotent -func (p *none) RemoveContainer(_ context.Context, s state.State, podUID string, containerName string) { +func (p *none) RemoveContainer(_ klog.Logger, s state.State, podUID string, containerName string) { } // GetTopologyHints implements the topologymanager.HintProvider Interface // and is consulted to achieve NUMA aware resource alignment among this // and other resource controllers. -func (p *none) GetTopologyHints(_ context.Context, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { +func (p *none) GetTopologyHints(_ klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { return nil } // GetPodTopologyHints implements the topologymanager.HintProvider Interface // and is consulted to achieve NUMA aware resource alignment among this // and other resource controllers. -func (p *none) GetPodTopologyHints(_ context.Context, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { +func (p *none) GetPodTopologyHints(_ klog.Logger, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { return nil } // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node -func (p *none) GetAllocatableMemory(_ context.Context, s state.State) []state.Block { +func (p *none) GetAllocatableMemory(s state.State) []state.Block { return []state.Block{} } diff --git a/pkg/kubelet/cm/memorymanager/policy_static.go b/pkg/kubelet/cm/memorymanager/policy_static.go index 7e39009670a..eb5c3b5f67c 100644 --- a/pkg/kubelet/cm/memorymanager/policy_static.go +++ b/pkg/kubelet/cm/memorymanager/policy_static.go @@ -17,11 +17,9 @@ limitations under the License. package memorymanager import ( - "context" "fmt" "sort" - "github.com/go-logr/logr" cadvisorapi "github.com/google/cadvisor/info/v1" v1 "k8s.io/api/core/v1" @@ -62,7 +60,7 @@ type staticPolicy struct { var _ Policy = &staticPolicy{} // NewPolicyStatic returns new static policy instance -func NewPolicyStatic(ctx context.Context, machineInfo *cadvisorapi.MachineInfo, reserved systemReservedMemory, affinity topologymanager.Store) (Policy, error) { +func NewPolicyStatic(logger klog.Logger, machineInfo *cadvisorapi.MachineInfo, reserved systemReservedMemory, affinity topologymanager.Store) (Policy, error) { var totalSystemReserved uint64 for _, node := range reserved { if _, ok := node[v1.ResourceMemory]; !ok { @@ -88,8 +86,7 @@ func (p *staticPolicy) Name() string { return string(PolicyTypeStatic) } -func (p *staticPolicy) Start(ctx context.Context, s state.State) error { - logger := klog.FromContext(ctx) +func (p *staticPolicy) Start(logger klog.Logger, s state.State) error { if err := p.validateState(logger, s); err != nil { logger.Error(err, "Invalid state, please drain node and remove policy state file") return err @@ -98,9 +95,8 @@ func (p *staticPolicy) Start(ctx context.Context, s state.State) error { } // Allocate call is idempotent -func (p *staticPolicy) Allocate(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) (rerr error) { +func (p *staticPolicy) Allocate(logger klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) (rerr error) { // allocate the memory only for guaranteed pods - logger := klog.FromContext(ctx) logger = klog.LoggerWithValues(logger, "pod", klog.KObj(pod), "containerName", container.Name) qos := v1qos.GetPodQOS(pod) if qos != v1.PodQOSGuaranteed { @@ -259,8 +255,8 @@ func (p *staticPolicy) getPodReusableMemory(pod *v1.Pod, numaAffinity bitmask.Bi } // RemoveContainer call is idempotent -func (p *staticPolicy) RemoveContainer(ctx context.Context, s state.State, podUID string, containerName string) { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "podUID", podUID, "containerName", containerName) +func (p *staticPolicy) RemoveContainer(logger klog.Logger, s state.State, podUID string, containerName string) { + logger = klog.LoggerWithValues(logger, "podUID", podUID, "containerName", containerName) blocks := s.GetMemoryBlocks(podUID, containerName) if blocks == nil { @@ -313,7 +309,7 @@ func (p *staticPolicy) RemoveContainer(ctx context.Context, s state.State, podUI s.SetMachineState(machineState) } -func regenerateHints(logger logr.Logger, pod *v1.Pod, ctn *v1.Container, ctnBlocks []state.Block, reqRsrc map[v1.ResourceName]uint64) map[string][]topologymanager.TopologyHint { +func regenerateHints(logger klog.Logger, pod *v1.Pod, ctn *v1.Container, ctnBlocks []state.Block, reqRsrc map[v1.ResourceName]uint64) map[string][]topologymanager.TopologyHint { hints := map[string][]topologymanager.TopologyHint{} for resourceName := range reqRsrc { hints[string(resourceName)] = []topologymanager.TopologyHint{} @@ -405,8 +401,8 @@ func getPodRequestedResources(pod *v1.Pod) (map[v1.ResourceName]uint64, error) { return reqRsrcs, nil } -func (p *staticPolicy) GetPodTopologyHints(ctx context.Context, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "pod", klog.KObj(pod)) +func (p *staticPolicy) GetPodTopologyHints(logger klog.Logger, s state.State, pod *v1.Pod) map[string][]topologymanager.TopologyHint { + logger = klog.LoggerWithValues(logger, "pod", klog.KObj(pod)) if v1qos.GetPodQOS(pod) != v1.PodQOSGuaranteed { return nil @@ -440,8 +436,8 @@ func (p *staticPolicy) GetPodTopologyHints(ctx context.Context, s state.State, p // GetTopologyHints implements the topologymanager.HintProvider Interface // and is consulted to achieve NUMA aware resource alignment among this // and other resource controllers. -func (p *staticPolicy) GetTopologyHints(ctx context.Context, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - logger := klog.LoggerWithValues(klog.FromContext(ctx), "pod", klog.KObj(pod)) +func (p *staticPolicy) GetTopologyHints(logger klog.Logger, s state.State, pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { + logger = klog.LoggerWithValues(logger, "pod", klog.KObj(pod)) if v1qos.GetPodQOS(pod) != v1.PodQOSGuaranteed { return nil @@ -599,7 +595,7 @@ func areGroupsEqual(group1, group2 []int) bool { return true } -func (p *staticPolicy) validateState(logger logr.Logger, s state.State) error { +func (p *staticPolicy) validateState(logger klog.Logger, s state.State) error { machineState := s.GetMachineState() memoryAssignments := s.GetMemoryAssignments() @@ -672,7 +668,7 @@ func (p *staticPolicy) validateState(logger logr.Logger, s state.State) error { return nil } -func areMachineStatesEqual(logger logr.Logger, ms1, ms2 state.NUMANodeMap) bool { +func areMachineStatesEqual(logger klog.Logger, ms1, ms2 state.NUMANodeMap) bool { if len(ms1) != len(ms2) { logger.Info("Node states were different", "lengthNode1", len(ms1), "lengthNode2", len(ms2)) return false @@ -733,7 +729,7 @@ func areMachineStatesEqual(logger logr.Logger, ms1, ms2 state.NUMANodeMap) bool return true } -func areMemoryStatesEqual(logger logr.Logger, memoryState1, memoryState2 *state.MemoryTable, nodeID int, resourceName v1.ResourceName) bool { +func areMemoryStatesEqual(logger klog.Logger, memoryState1, memoryState2 *state.MemoryTable, nodeID int, resourceName v1.ResourceName) bool { loggerWithValues := klog.LoggerWithValues(logger, "node", nodeID, "resource", resourceName, "memoryState1", *memoryState1, "memoryState2", *memoryState2) if memoryState1.TotalMemSize != memoryState2.TotalMemSize { logger.Info("Memory states for the NUMA node and resource are different", "field", "TotalMemSize", "TotalMemSize1", memoryState1.TotalMemSize, "TotalMemSize2", memoryState2.TotalMemSize) @@ -910,7 +906,7 @@ func findBestHint(hints []topologymanager.TopologyHint) *topologymanager.Topolog } // GetAllocatableMemory returns the amount of allocatable memory for each NUMA node -func (p *staticPolicy) GetAllocatableMemory(_ context.Context, s state.State) []state.Block { +func (p *staticPolicy) GetAllocatableMemory(s state.State) []state.Block { var allocatableMemory []state.Block machineState := s.GetMachineState() for numaNodeID, numaNodeState := range machineState { @@ -974,7 +970,7 @@ func (p *staticPolicy) updatePodReusableMemory(pod *v1.Pod, container *v1.Contai } } -func (p *staticPolicy) updateInitContainersMemoryBlocks(logger logr.Logger, s state.State, pod *v1.Pod, container *v1.Container, containerMemoryBlocks []state.Block) { +func (p *staticPolicy) updateInitContainersMemoryBlocks(logger klog.Logger, s state.State, pod *v1.Pod, container *v1.Container, containerMemoryBlocks []state.Block) { podUID := string(pod.UID) for _, containerBlock := range containerMemoryBlocks { @@ -1038,7 +1034,7 @@ func isRegularInitContainer(pod *v1.Pod, container *v1.Container) bool { return false } -func isNUMAAffinitiesEqual(logger logr.Logger, numaAffinity1, numaAffinity2 []int) bool { +func isNUMAAffinitiesEqual(logger klog.Logger, numaAffinity1, numaAffinity2 []int) bool { bitMask1, err := bitmask.NewBitMask(numaAffinity1...) if err != nil { logger.Error(err, "failed to create bit mask", "numaAffinity1", numaAffinity1) diff --git a/pkg/kubelet/cm/memorymanager/policy_static_test.go b/pkg/kubelet/cm/memorymanager/policy_static_test.go index bb5ab463bbb..5f51082f87b 100644 --- a/pkg/kubelet/cm/memorymanager/policy_static_test.go +++ b/pkg/kubelet/cm/memorymanager/policy_static_test.go @@ -149,13 +149,13 @@ type testStaticPolicy struct { } func initTests(t *testing.T, testCase *testStaticPolicy, hint *topologymanager.TopologyHint, initContainersReusableMemory reusableMemory) (Policy, state.State, error) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) manager := topologymanager.NewFakeManager() if hint != nil { manager = topologymanager.NewFakeManagerWithHint(hint) } - p, err := NewPolicyStatic(tCtx, testCase.machineInfo, testCase.systemReserved, manager) + p, err := NewPolicyStatic(logger, testCase.machineInfo, testCase.systemReserved, manager) if err != nil { return nil, nil, err } @@ -228,7 +228,7 @@ func TestStaticPolicyName(t *testing.T) { } func TestStaticPolicyStart(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should fail, if machine state is empty, but it has memory assignments", @@ -1169,7 +1169,7 @@ func TestStaticPolicyStart(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - err = p.Start(tCtx, s) + err = p.Start(logger, s) if !reflect.DeepEqual(err, testCase.expectedError) { t.Fatalf("The actual error: %v is different from the expected one: %v", err, testCase.expectedError) } @@ -1192,7 +1192,7 @@ func TestStaticPolicyStart(t *testing.T) { } func TestStaticPolicyAllocate(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should do nothing for non-guaranteed pods", @@ -2089,7 +2089,7 @@ func TestStaticPolicyAllocate(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - err = p.Allocate(tCtx, s, testCase.pod, &testCase.pod.Spec.Containers[0]) + err = p.Allocate(logger, s, testCase.pod, &testCase.pod.Spec.Containers[0]) if (err == nil) != (testCase.expectedError == nil) || (err != nil && testCase.expectedError != nil && err.Error() != testCase.expectedError.Error()) { t.Fatalf("The actual error %v is different from the expected one %v", err, testCase.expectedError) } @@ -2112,7 +2112,7 @@ func TestStaticPolicyAllocate(t *testing.T) { } func TestStaticPolicyAllocateWithInitContainers(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should re-use init containers memory, init containers requests 1Gi and 2Gi, apps containers 3Gi and 4Gi", @@ -2814,14 +2814,14 @@ func TestStaticPolicyAllocateWithInitContainers(t *testing.T) { } for i := range testCase.pod.Spec.InitContainers { - err = p.Allocate(tCtx, s, testCase.pod, &testCase.pod.Spec.InitContainers[i]) + err = p.Allocate(logger, s, testCase.pod, &testCase.pod.Spec.InitContainers[i]) if !reflect.DeepEqual(err, testCase.expectedError) { t.Fatalf("The actual error %v is different from the expected one %v", err, testCase.expectedError) } } for i := range testCase.pod.Spec.Containers { - err = p.Allocate(tCtx, s, testCase.pod, &testCase.pod.Spec.Containers[i]) + err = p.Allocate(logger, s, testCase.pod, &testCase.pod.Spec.Containers[i]) if !reflect.DeepEqual(err, testCase.expectedError) { t.Fatalf("The actual error %v is different from the expected one %v", err, testCase.expectedError) } @@ -2841,7 +2841,7 @@ func TestStaticPolicyAllocateWithInitContainers(t *testing.T) { } func TestStaticPolicyAllocateWithRestartableInitContainers(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should do nothing once containers already exist under the state file", @@ -3148,7 +3148,7 @@ func TestStaticPolicyAllocateWithRestartableInitContainers(t *testing.T) { } for i := range testCase.pod.Spec.InitContainers { - err = p.Allocate(tCtx, s, testCase.pod, &testCase.pod.Spec.InitContainers[i]) + err = p.Allocate(logger, s, testCase.pod, &testCase.pod.Spec.InitContainers[i]) if !reflect.DeepEqual(err, testCase.expectedError) { t.Fatalf("The actual error %v is different from the expected one %v", err, testCase.expectedError) } @@ -3159,7 +3159,7 @@ func TestStaticPolicyAllocateWithRestartableInitContainers(t *testing.T) { } for i := range testCase.pod.Spec.Containers { - err = p.Allocate(tCtx, s, testCase.pod, &testCase.pod.Spec.Containers[i]) + err = p.Allocate(logger, s, testCase.pod, &testCase.pod.Spec.Containers[i]) if err != nil { t.Fatalf("Unexpected error: %v", err) } @@ -3179,7 +3179,7 @@ func TestStaticPolicyAllocateWithRestartableInitContainers(t *testing.T) { } func TestStaticPolicyRemoveContainer(t *testing.T) { - logger, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should do nothing when the container does not exist under the state", @@ -3422,7 +3422,7 @@ func TestStaticPolicyRemoveContainer(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - p.RemoveContainer(tCtx, s, "pod1", "container1") + p.RemoveContainer(logger, s, "pod1", "container1") assignments := s.GetMemoryAssignments() if !areContainerMemoryAssignmentsEqual(t, assignments, testCase.expectedAssignments) { t.Fatalf("Actual assignments %v are different from the expected %v", assignments, testCase.expectedAssignments) @@ -3437,7 +3437,7 @@ func TestStaticPolicyRemoveContainer(t *testing.T) { } func TestStaticPolicyGetTopologyHints(t *testing.T) { - tCtx := ktesting.Init(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should not provide topology hints for non-guaranteed pods", @@ -3827,7 +3827,7 @@ func TestStaticPolicyGetTopologyHints(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - topologyHints := p.GetTopologyHints(tCtx, s, testCase.pod, &testCase.pod.Spec.Containers[0]) + topologyHints := p.GetTopologyHints(logger, s, testCase.pod, &testCase.pod.Spec.Containers[0]) if !reflect.DeepEqual(topologyHints, testCase.expectedTopologyHints) { t.Fatalf("The actual topology hints: '%+v' are different from the expected one: '%+v'", topologyHints, testCase.expectedTopologyHints) } @@ -3836,7 +3836,7 @@ func TestStaticPolicyGetTopologyHints(t *testing.T) { } func TestStaticPolicyGetPodTopologyHints(t *testing.T) { - _, tCtx := ktesting.NewTestContext(t) + logger, _ := ktesting.NewTestContext(t) testCases := []testStaticPolicy{ { description: "should not provide pod topology hints for guaranteed pod with pod level resources", @@ -3860,7 +3860,7 @@ func TestStaticPolicyGetPodTopologyHints(t *testing.T) { t.Fatalf("Unexpected error: %v", err) } - topologyHints := p.GetPodTopologyHints(tCtx, s, testCase.pod) + topologyHints := p.GetPodTopologyHints(logger, s, testCase.pod) if !reflect.DeepEqual(topologyHints, testCase.expectedTopologyHints) { t.Fatalf("The actual topology hints: '%+v' are different from the expected one: '%+v'", topologyHints, testCase.expectedTopologyHints) }