From 919e8a62e9c2eeb7030b5c04ed742098a89b419d Mon Sep 17 00:00:00 2001 From: Francesco Romani Date: Tue, 5 Nov 2024 13:58:54 +0100 Subject: [PATCH] uncore: more testcases add multi-uncore real topology and use it by starting the policy allocation tests Signed-off-by: Francesco Romani --- .../cm/cpumanager/policy_static_test.go | 182 ++++++++ pkg/kubelet/cm/cpumanager/policy_test.go | 404 ++++++++++++++++++ 2 files changed, 586 insertions(+) diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go index 9e9618873cd..33ee34c22ae 100644 --- a/pkg/kubelet/cm/cpumanager/policy_static_test.go +++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go @@ -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 +} diff --git a/pkg/kubelet/cm/cpumanager/policy_test.go b/pkg/kubelet/cm/cpumanager/policy_test.go index dcdeada2f0e..ad096bd0619 100644 --- a/pkg/kubelet/cm/cpumanager/policy_test.go +++ b/pkg/kubelet/cm/cpumanager/policy_test.go @@ -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}, + }, + } )