uncore: more testcases

add multi-uncore real topology and use it by starting the policy allocation tests

Signed-off-by: Francesco Romani <fromani@redhat.com>
This commit is contained in:
Francesco Romani 2024-11-05 13:58:54 +01:00 committed by Charles Wong
parent 0f7becbc44
commit 919e8a62e9
2 changed files with 586 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import (
"testing"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
utilfeature "k8s.io/apiserver/pkg/util/feature"
featuregatetesting "k8s.io/component-base/featuregate/testing"
pkgfeatures "k8s.io/kubernetes/pkg/features"
@ -1147,6 +1148,168 @@ func TestStaticPolicyAddWithResvList(t *testing.T) {
}
}
func WithPodUID(pod *v1.Pod, podUID string) *v1.Pod {
ret := pod.DeepCopy()
ret.UID = types.UID(podUID)
return ret
}
func TestStaticPolicyAddWithUncoreAlignment(t *testing.T) {
featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, pkgfeatures.CPUManagerPolicyAlphaOptions, true)
testCases := []staticPolicyTestWithResvList{
{
description: "GuPodSingleContainerSaturating, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail",
topo: topoDualSocketMultiNumaPerSocketUncore,
numReservedCPUs: 8,
reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 16
cpuPolicyOptions: map[string]string{
FullPCPUsOnlyOption: "true",
PreferAlignByUnCoreCacheOption: "true",
},
stAssignments: state.ContainerCPUAssignments{},
// remove partially used uncores from the available CPUs to simulate fully clean slate
stDefaultCPUSet: topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUs().Difference(
cpuset.New().Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(0),
).Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(16),
),
),
pod: WithPodUID(
makeMultiContainerPod(
[]struct{ request, limit string }{}, // init container
[]struct{ request, limit string }{ // app container
{"16000m", "16000m"}, // CpusPerUncore=16 with this topology
},
),
"with-app-container-saturating",
),
},
{
description: "GuPodMainAndSidecarContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail",
topo: topoDualSocketMultiNumaPerSocketUncore,
numReservedCPUs: 8,
reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 16
cpuPolicyOptions: map[string]string{
FullPCPUsOnlyOption: "true",
PreferAlignByUnCoreCacheOption: "true",
},
stAssignments: state.ContainerCPUAssignments{},
// remove partially used uncores from the available CPUs to simulate fully clean slate
stDefaultCPUSet: topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUs().Difference(
cpuset.New().Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(0),
).Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(16),
),
),
pod: WithPodUID(
makeMultiContainerPod(
[]struct{ request, limit string }{}, // init container
[]struct{ request, limit string }{ // app container
{"12000m", "12000m"},
{"2000m", "2000m"},
},
),
"with-app-container-and-sidecar",
),
},
{
description: "GuPodSidecarAndMainContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail",
topo: topoDualSocketMultiNumaPerSocketUncore,
numReservedCPUs: 8,
reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 16
cpuPolicyOptions: map[string]string{
FullPCPUsOnlyOption: "true",
PreferAlignByUnCoreCacheOption: "true",
},
stAssignments: state.ContainerCPUAssignments{},
// remove partially used uncores from the available CPUs to simulate fully clean slate
stDefaultCPUSet: topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUs().Difference(
cpuset.New().Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(0),
).Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(16),
),
),
pod: WithPodUID(
makeMultiContainerPod(
[]struct{ request, limit string }{}, // init container
[]struct{ request, limit string }{ // app container
{"2000m", "2000m"},
{"12000m", "12000m"},
},
),
"with-sidecar-and-app-container",
),
},
{
description: "GuPodMainAndManySidecarContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail",
topo: topoDualSocketMultiNumaPerSocketUncore,
numReservedCPUs: 8,
reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 16
cpuPolicyOptions: map[string]string{
FullPCPUsOnlyOption: "true",
PreferAlignByUnCoreCacheOption: "true",
},
stAssignments: state.ContainerCPUAssignments{},
// remove partially used uncores from the available CPUs to simulate fully clean slate
stDefaultCPUSet: topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUs().Difference(
cpuset.New().Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(0),
).Union(
topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUsInUncoreCaches(16),
),
),
pod: WithPodUID(
makeMultiContainerPod(
[]struct{ request, limit string }{}, // init container
[]struct{ request, limit string }{ // app container
{"10000m", "10000m"},
{"2000m", "2000m"},
{"2000m", "2000m"},
{"2000m", "2000m"},
},
),
"with-app-container-and-multi-sidecar",
),
},
}
for _, testCase := range testCases {
t.Run(testCase.description, func(t *testing.T) {
policy, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testCase.cpuPolicyOptions)
if err != nil {
t.Fatalf("NewStaticPolicy() failed with %v", err)
}
st := &mockState{
assignments: testCase.stAssignments,
defaultCPUSet: testCase.stDefaultCPUSet.Difference(testCase.reserved), // ensure the cpumanager invariant
}
for idx := range testCase.pod.Spec.Containers {
container := &testCase.pod.Spec.Containers[idx]
err := policy.Allocate(st, testCase.pod, container)
if err != nil {
t.Fatalf("Allocate failed: pod=%q container=%q", testCase.pod.UID, container.Name)
}
}
uncoreCacheIDs, err := getPodUncoreCacheIDs(st, testCase.topo, testCase.pod)
if err != nil {
t.Fatalf("uncore cache check: %v", err.Error())
}
ids := cpuset.New(uncoreCacheIDs...)
if ids.Size() != 1 {
t.Fatalf("not all container on the same uncore cache: %s", ids.String())
}
})
}
}
type staticPolicyOptionTestCase struct {
description string
policyOptions map[string]string
@ -1274,3 +1437,22 @@ func newCPUSetPtr(cpus ...int) *cpuset.CPUSet {
ret := cpuset.New(cpus...)
return &ret
}
func getPodUncoreCacheIDs(s state.Reader, topo *topology.CPUTopology, pod *v1.Pod) ([]int, error) {
var uncoreCacheIDs []int
for idx := range pod.Spec.Containers {
container := &pod.Spec.Containers[idx]
cset, ok := s.GetCPUSet(string(pod.UID), container.Name)
if !ok {
return nil, fmt.Errorf("GetCPUSet(%s, %s) not ok", pod.UID, container.Name)
}
for _, cpuID := range cset.UnsortedList() {
info, ok := topo.CPUDetails[cpuID]
if !ok {
return nil, fmt.Errorf("cpuID %v not in topo.CPUDetails", cpuID)
}
uncoreCacheIDs = append(uncoreCacheIDs, info.UncoreCacheID)
}
}
return uncoreCacheIDs, nil
}

View File

@ -993,4 +993,408 @@ var (
255: {CoreID: 127, SocketID: 1, NUMANodeID: 7},
},
}
/*
Topology from dual AMD EPYC 9654 96-Core Processor; lscpu excerpt
CPU(s): 384
On-line CPU(s) list: 0-383
Thread(s) per core: 2
Core(s) per socket: 96
Socket(s): 2
NUMA node(s): 2
NUMA node0 CPU(s): 0-95,192-287
NUMA node1 CPU(s): 96-191,288-383
*/
topoDualSocketMultiNumaPerSocketUncore = &topology.CPUTopology{
NumCPUs: 384,
NumCores: 192,
NumUncoreCache: 24,
NumSockets: 2,
NumNUMANodes: 2,
CPUDetails: topology.CPUDetails{
0: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 0, UncoreCacheID: 0},
1: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 1, UncoreCacheID: 0},
10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 4},
100: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 100, UncoreCacheID: 16},
101: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 101, UncoreCacheID: 16},
102: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 102, UncoreCacheID: 16},
103: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 103, UncoreCacheID: 16},
104: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 104, UncoreCacheID: 20},
105: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 105, UncoreCacheID: 20},
106: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 106, UncoreCacheID: 20},
107: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 107, UncoreCacheID: 20},
108: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 108, UncoreCacheID: 20},
109: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 109, UncoreCacheID: 20},
11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 4},
110: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 110, UncoreCacheID: 20},
111: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 111, UncoreCacheID: 20},
112: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 112, UncoreCacheID: 24},
113: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 113, UncoreCacheID: 24},
114: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 114, UncoreCacheID: 24},
115: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 115, UncoreCacheID: 24},
116: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 116, UncoreCacheID: 24},
117: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 117, UncoreCacheID: 24},
118: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 118, UncoreCacheID: 24},
119: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 119, UncoreCacheID: 24},
12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 4},
120: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 120, UncoreCacheID: 18},
121: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 121, UncoreCacheID: 18},
122: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 122, UncoreCacheID: 18},
123: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 123, UncoreCacheID: 18},
124: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 124, UncoreCacheID: 18},
125: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 125, UncoreCacheID: 18},
126: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 126, UncoreCacheID: 18},
127: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 127, UncoreCacheID: 18},
128: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 128, UncoreCacheID: 22},
129: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 129, UncoreCacheID: 22},
13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 4},
130: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 130, UncoreCacheID: 22},
131: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 131, UncoreCacheID: 22},
132: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 132, UncoreCacheID: 22},
133: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 133, UncoreCacheID: 22},
134: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 134, UncoreCacheID: 22},
135: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 135, UncoreCacheID: 22},
136: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 136, UncoreCacheID: 26},
137: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 137, UncoreCacheID: 26},
138: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 138, UncoreCacheID: 26},
139: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 139, UncoreCacheID: 26},
14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 4},
140: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 140, UncoreCacheID: 26},
141: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 141, UncoreCacheID: 26},
142: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 142, UncoreCacheID: 26},
143: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 143, UncoreCacheID: 26},
144: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 144, UncoreCacheID: 19},
145: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 145, UncoreCacheID: 19},
146: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 146, UncoreCacheID: 19},
147: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 147, UncoreCacheID: 19},
148: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 148, UncoreCacheID: 19},
149: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 149, UncoreCacheID: 19},
15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 4},
150: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 150, UncoreCacheID: 19},
151: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 151, UncoreCacheID: 19},
152: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 152, UncoreCacheID: 23},
153: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 153, UncoreCacheID: 23},
154: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 154, UncoreCacheID: 23},
155: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 155, UncoreCacheID: 23},
156: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 156, UncoreCacheID: 23},
157: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 157, UncoreCacheID: 23},
158: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 158, UncoreCacheID: 23},
159: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 159, UncoreCacheID: 23},
16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 8},
160: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 160, UncoreCacheID: 27},
161: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 161, UncoreCacheID: 27},
162: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 162, UncoreCacheID: 27},
163: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 163, UncoreCacheID: 27},
164: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 164, UncoreCacheID: 27},
165: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 165, UncoreCacheID: 27},
166: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 166, UncoreCacheID: 27},
167: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 167, UncoreCacheID: 27},
168: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 168, UncoreCacheID: 17},
169: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 169, UncoreCacheID: 17},
17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 8},
170: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 170, UncoreCacheID: 17},
171: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 171, UncoreCacheID: 17},
172: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 172, UncoreCacheID: 17},
173: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 173, UncoreCacheID: 17},
174: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 174, UncoreCacheID: 17},
175: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 175, UncoreCacheID: 17},
176: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 176, UncoreCacheID: 21},
177: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 177, UncoreCacheID: 21},
178: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 178, UncoreCacheID: 21},
179: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 179, UncoreCacheID: 21},
18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 8},
180: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 180, UncoreCacheID: 21},
181: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 181, UncoreCacheID: 21},
182: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 182, UncoreCacheID: 21},
183: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 183, UncoreCacheID: 21},
184: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 184, UncoreCacheID: 25},
185: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 185, UncoreCacheID: 25},
186: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 186, UncoreCacheID: 25},
187: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 187, UncoreCacheID: 25},
188: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 188, UncoreCacheID: 25},
189: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 189, UncoreCacheID: 25},
19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 8},
190: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 190, UncoreCacheID: 25},
191: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 191, UncoreCacheID: 25},
192: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 0, UncoreCacheID: 0},
193: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 1, UncoreCacheID: 0},
194: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0},
195: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0},
196: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0},
197: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0},
198: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0},
199: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0},
2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0},
20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 8},
200: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 4},
201: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 4},
202: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 4},
203: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 4},
204: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 4},
205: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 4},
206: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 4},
207: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 4},
208: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 8},
209: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 8},
21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 8},
210: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 8},
211: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 8},
212: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 8},
213: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 8},
214: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 8},
215: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 8},
216: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 2},
217: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 2},
218: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 2},
219: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 2},
22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 8},
220: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 2},
221: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 2},
222: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 2},
223: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 2},
224: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 6},
225: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 6},
226: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 6},
227: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 6},
228: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 6},
229: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 6},
23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 8},
230: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 6},
231: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 6},
232: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 10},
233: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 10},
234: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 10},
235: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 10},
236: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 10},
237: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 10},
238: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 10},
239: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 10},
24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 2},
240: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 3},
241: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 3},
242: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 3},
243: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 3},
244: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 3},
245: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 3},
246: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 3},
247: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 3},
248: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 7},
249: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 7},
25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 2},
250: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 7},
251: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 7},
252: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 7},
253: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 7},
254: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 7},
255: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 7},
256: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 64, UncoreCacheID: 11},
257: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 11},
258: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 11},
259: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 11},
26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 2},
260: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 11},
261: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 11},
262: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 11},
263: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 11},
264: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 1},
265: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 1},
266: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 1},
267: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 1},
268: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 1},
269: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 1},
27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 2},
270: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 1},
271: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 1},
272: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 5},
273: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 5},
274: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 5},
275: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 5},
276: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 5},
277: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 5},
278: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 5},
279: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 5},
28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 2},
280: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 9},
281: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 9},
282: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 9},
283: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 9},
284: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 9},
285: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 9},
286: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 9},
287: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 9},
288: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 96, UncoreCacheID: 16},
289: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 97, UncoreCacheID: 16},
29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 2},
290: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 98, UncoreCacheID: 16},
291: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 99, UncoreCacheID: 16},
292: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 100, UncoreCacheID: 16},
293: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 101, UncoreCacheID: 16},
294: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 102, UncoreCacheID: 16},
295: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 103, UncoreCacheID: 16},
296: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 104, UncoreCacheID: 20},
297: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 105, UncoreCacheID: 20},
298: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 106, UncoreCacheID: 20},
299: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 107, UncoreCacheID: 20},
3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0},
30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 2},
300: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 108, UncoreCacheID: 20},
301: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 109, UncoreCacheID: 20},
302: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 110, UncoreCacheID: 20},
303: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 111, UncoreCacheID: 20},
304: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 112, UncoreCacheID: 24},
305: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 113, UncoreCacheID: 24},
306: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 114, UncoreCacheID: 24},
307: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 115, UncoreCacheID: 24},
308: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 116, UncoreCacheID: 24},
309: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 117, UncoreCacheID: 24},
31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 2},
310: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 118, UncoreCacheID: 24},
311: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 119, UncoreCacheID: 24},
312: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 120, UncoreCacheID: 18},
313: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 121, UncoreCacheID: 18},
314: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 122, UncoreCacheID: 18},
315: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 123, UncoreCacheID: 18},
316: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 124, UncoreCacheID: 18},
317: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 125, UncoreCacheID: 18},
318: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 126, UncoreCacheID: 18},
319: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 127, UncoreCacheID: 18},
32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 6},
320: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 128, UncoreCacheID: 22},
321: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 129, UncoreCacheID: 22},
322: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 130, UncoreCacheID: 22},
323: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 131, UncoreCacheID: 22},
324: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 132, UncoreCacheID: 22},
325: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 133, UncoreCacheID: 22},
326: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 134, UncoreCacheID: 22},
327: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 135, UncoreCacheID: 22},
328: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 136, UncoreCacheID: 26},
329: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 137, UncoreCacheID: 26},
33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 6},
330: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 138, UncoreCacheID: 26},
331: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 139, UncoreCacheID: 26},
332: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 140, UncoreCacheID: 26},
333: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 141, UncoreCacheID: 26},
334: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 142, UncoreCacheID: 26},
335: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 143, UncoreCacheID: 26},
336: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 144, UncoreCacheID: 19},
337: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 145, UncoreCacheID: 19},
338: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 146, UncoreCacheID: 19},
339: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 147, UncoreCacheID: 19},
34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 6},
340: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 148, UncoreCacheID: 19},
341: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 149, UncoreCacheID: 19},
342: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 150, UncoreCacheID: 19},
343: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 151, UncoreCacheID: 19},
344: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 152, UncoreCacheID: 23},
345: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 153, UncoreCacheID: 23},
346: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 154, UncoreCacheID: 23},
347: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 155, UncoreCacheID: 23},
348: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 156, UncoreCacheID: 23},
349: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 157, UncoreCacheID: 23},
35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 6},
350: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 158, UncoreCacheID: 23},
351: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 159, UncoreCacheID: 23},
352: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 160, UncoreCacheID: 27},
353: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 161, UncoreCacheID: 27},
354: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 162, UncoreCacheID: 27},
355: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 163, UncoreCacheID: 27},
356: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 164, UncoreCacheID: 27},
357: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 165, UncoreCacheID: 27},
358: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 166, UncoreCacheID: 27},
359: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 167, UncoreCacheID: 27},
36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 6},
360: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 168, UncoreCacheID: 17},
361: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 169, UncoreCacheID: 17},
362: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 170, UncoreCacheID: 17},
363: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 171, UncoreCacheID: 17},
364: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 172, UncoreCacheID: 17},
365: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 173, UncoreCacheID: 17},
366: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 174, UncoreCacheID: 17},
367: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 175, UncoreCacheID: 17},
368: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 176, UncoreCacheID: 21},
369: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 177, UncoreCacheID: 21},
37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 6},
370: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 178, UncoreCacheID: 21},
371: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 179, UncoreCacheID: 21},
372: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 180, UncoreCacheID: 21},
373: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 181, UncoreCacheID: 21},
374: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 182, UncoreCacheID: 21},
375: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 183, UncoreCacheID: 21},
376: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 184, UncoreCacheID: 25},
377: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 185, UncoreCacheID: 25},
378: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 186, UncoreCacheID: 25},
379: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 187, UncoreCacheID: 25},
38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 6},
380: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 188, UncoreCacheID: 25},
381: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 189, UncoreCacheID: 25},
382: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 190, UncoreCacheID: 25},
383: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 191, UncoreCacheID: 25},
39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 6},
4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0},
40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 10},
41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 10},
42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 10},
43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 10},
44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 10},
45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 10},
46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 10},
47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 10},
48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 3},
49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 3},
5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0},
50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 3},
51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 3},
52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 3},
53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 3},
54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 3},
55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 3},
56: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 7},
57: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 7},
58: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 7},
59: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 7},
6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0},
60: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 7},
61: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 7},
62: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 7},
63: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 7},
64: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 64, UncoreCacheID: 11},
65: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 11},
66: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 11},
67: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 11},
68: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 11},
69: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 11},
7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0},
70: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 11},
71: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 11},
72: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 1},
73: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 1},
74: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 1},
75: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 1},
76: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 1},
77: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 1},
78: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 1},
79: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 1},
8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 4},
80: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 5},
81: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 5},
82: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 5},
83: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 5},
84: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 5},
85: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 5},
86: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 5},
87: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 5},
88: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 9},
89: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 9},
9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 4},
90: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 9},
91: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 9},
92: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 9},
93: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 9},
94: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 9},
95: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 9},
96: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 96, UncoreCacheID: 16},
97: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 97, UncoreCacheID: 16},
98: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 98, UncoreCacheID: 16},
99: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 99, UncoreCacheID: 16},
},
}
)