From d4a5a085a84b3d2c3853b589787e25faec33e380 Mon Sep 17 00:00:00 2001 From: matte21 Date: Sun, 8 Oct 2023 11:59:04 -0400 Subject: [PATCH] Improve error message in cpu assignment logic Include number of requested and available CPUs in the error message when the assignment of CPUs fails because there are less available CPUs than requested. --- pkg/kubelet/cm/cpumanager/cpu_assignment.go | 4 ++-- pkg/kubelet/cm/cpumanager/cpu_assignment_test.go | 2 +- pkg/kubelet/cm/cpumanager/policy_static_test.go | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/kubelet/cm/cpumanager/cpu_assignment.go b/pkg/kubelet/cm/cpumanager/cpu_assignment.go index eba774e8f62..f0efd74e80e 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_assignment.go +++ b/pkg/kubelet/cm/cpumanager/cpu_assignment.go @@ -453,7 +453,7 @@ func takeByTopologyNUMAPacked(topo *topology.CPUTopology, availableCPUs cpuset.C return acc.result, nil } if acc.isFailed() { - return cpuset.New(), fmt.Errorf("not enough cpus available to satisfy request") + return cpuset.New(), fmt.Errorf("not enough cpus available to satisfy request: requested=%d, available=%d", numCPUs, availableCPUs.Size()) } // Algorithm: topology-aware best-fit @@ -565,7 +565,7 @@ func takeByTopologyNUMADistributed(topo *topology.CPUTopology, availableCPUs cpu return acc.result, nil } if acc.isFailed() { - return cpuset.New(), fmt.Errorf("not enough cpus available to satisfy request") + return cpuset.New(), fmt.Errorf("not enough cpus available to satisfy request: requested=%d, available=%d", numCPUs, availableCPUs.Size()) } // Get the list of NUMA nodes represented by the set of CPUs in 'availableCPUs'. diff --git a/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go b/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go index 2199114d656..63b026b1979 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go +++ b/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go @@ -522,7 +522,7 @@ func commonTakeByTopologyTestCases(t *testing.T) []takeByTopologyTestCase { topoSingleSocketHT, cpuset.New(0, 2, 4, 6), 5, - "not enough cpus available to satisfy request", + "not enough cpus available to satisfy request: requested=5, available=4", cpuset.New(), }, { diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go index 0dcf78d49dc..b0f14ae04e7 100644 --- a/pkg/kubelet/cm/cpumanager/policy_static_test.go +++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go @@ -399,7 +399,7 @@ func TestStaticPolicyAdd(t *testing.T) { stAssignments: state.ContainerCPUAssignments{}, stDefaultCPUSet: cpuset.New(0, 1, 2, 3, 4, 5, 6, 7), pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), + expErr: fmt.Errorf("not enough cpus available to satisfy request: requested=8, available=7"), expCPUAlloc: false, expCSet: cpuset.New(), }, @@ -429,7 +429,7 @@ func TestStaticPolicyAdd(t *testing.T) { }, stDefaultCPUSet: cpuset.New(0, 4, 5, 6, 7, 8, 9, 10, 11), pod: makePod("fakePod", "fakeContainer5", "10000m", "10000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), + expErr: fmt.Errorf("not enough cpus available to satisfy request: requested=10, available=8"), expCPUAlloc: false, expCSet: cpuset.New(), }, @@ -444,7 +444,7 @@ func TestStaticPolicyAdd(t *testing.T) { }, stDefaultCPUSet: cpuset.New(0, 7), pod: makePod("fakePod", "fakeContainer5", "2000m", "2000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), + expErr: fmt.Errorf("not enough cpus available to satisfy request: requested=2, available=1"), expCPUAlloc: false, expCSet: cpuset.New(), }, @@ -461,7 +461,7 @@ func TestStaticPolicyAdd(t *testing.T) { }, stDefaultCPUSet: cpuset.New(10, 11, 53, 37, 55, 67, 52), pod: makePod("fakePod", "fakeContainer5", "76000m", "76000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), + expErr: fmt.Errorf("not enough cpus available to satisfy request: requested=76, available=7"), expCPUAlloc: false, expCSet: cpuset.New(), }, @@ -981,7 +981,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { stAssignments: state.ContainerCPUAssignments{}, stDefaultCPUSet: cpuset.New(0, 1, 2, 3, 4, 5, 6, 7), pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), + expErr: fmt.Errorf("not enough cpus available to satisfy request: requested=8, available=7"), expCPUAlloc: false, expCSet: cpuset.New(), },