diff --git a/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go b/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go index 2b2b04e7b29..7a25e3887c1 100644 --- a/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go +++ b/pkg/kubelet/cm/cpumanager/cpu_assignment_test.go @@ -175,6 +175,12 @@ func TestCPUAccumulatorFreeCPUs(t *testing.T) { cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), []int{2, 8, 4, 10, 1, 7, 3, 9, 5, 11}, }, + { + "triple socket HT, 12 cpus free", + topoTripleSocketHT, + cpuset.NewCPUSet(0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13), + []int{12, 13, 0, 1, 2, 3, 6, 7, 8, 9, 10, 11}, + }, } for _, tc := range testCases { diff --git a/pkg/kubelet/cm/cpumanager/policy_test.go b/pkg/kubelet/cm/cpumanager/policy_test.go index 02e3709c01d..7ce051b2b8f 100644 --- a/pkg/kubelet/cm/cpumanager/policy_test.go +++ b/pkg/kubelet/cm/cpumanager/policy_test.go @@ -73,6 +73,33 @@ var ( }, } + // fake topology for testing purposes only + topoTripleSocketHT = &topology.CPUTopology{ + NumCPUs: 18, + NumSockets: 3, + NumCores: 9, + CPUDetails: map[int]topology.CPUInfo{ + 0: {CoreID: 0, SocketID: 1, NUMANodeID: 1}, + 1: {CoreID: 0, SocketID: 1, NUMANodeID: 1}, + 2: {CoreID: 1, SocketID: 1, NUMANodeID: 1}, + 3: {CoreID: 1, SocketID: 1, NUMANodeID: 1}, + 4: {CoreID: 2, SocketID: 1, NUMANodeID: 1}, + 5: {CoreID: 2, SocketID: 1, NUMANodeID: 1}, + 6: {CoreID: 3, SocketID: 0, NUMANodeID: 0}, + 7: {CoreID: 3, SocketID: 0, NUMANodeID: 0}, + 8: {CoreID: 4, SocketID: 0, NUMANodeID: 0}, + 9: {CoreID: 4, SocketID: 0, NUMANodeID: 0}, + 10: {CoreID: 5, SocketID: 0, NUMANodeID: 0}, + 11: {CoreID: 5, SocketID: 0, NUMANodeID: 0}, + 12: {CoreID: 6, SocketID: 2, NUMANodeID: 2}, + 13: {CoreID: 6, SocketID: 2, NUMANodeID: 2}, + 14: {CoreID: 7, SocketID: 2, NUMANodeID: 2}, + 15: {CoreID: 7, SocketID: 2, NUMANodeID: 2}, + 16: {CoreID: 8, SocketID: 2, NUMANodeID: 2}, + 17: {CoreID: 8, SocketID: 2, NUMANodeID: 2}, + }, + } + /* Topology from https://www.open-mpi.org/projects/hwloc/lstopo/images/KNL.SNC4.H50.v1.11.png. Socket0: