diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go index 9e9618873cd..e21136e8f61 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" @@ -973,6 +974,7 @@ type staticPolicyTestWithResvList struct { expNewErr error expCPUAlloc bool expCSet cpuset.CPUSet + expUncoreCache cpuset.CPUSet // represents the expected UncoreCacheIDs } func TestStaticPolicyStartWithResvList(t *testing.T) { @@ -1147,6 +1149,564 @@ 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: topoDualSocketSingleNumaPerSocketSMTUncore, + numReservedCPUs: 8, + reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 12 + 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: topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(0), + ).Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(12), + ), + ), + 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", + ), + expUncoreCache: cpuset.New(1), + }, + { + description: "GuPodMainAndSidecarContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail", + topo: topoDualSocketSingleNumaPerSocketSMTUncore, + numReservedCPUs: 8, + reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 12 + 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: topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(0), + ).Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(12), + ), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, + {"2000m", "2000m"}, + }, + ), + "with-app-container-and-sidecar", + ), + expUncoreCache: cpuset.New(1), + }, + { + description: "GuPodSidecarAndMainContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail", + topo: topoDualSocketSingleNumaPerSocketSMTUncore, + numReservedCPUs: 8, + reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 12 + 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: topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(0), + ).Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(12), + ), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"2000m", "2000m"}, + {"12000m", "12000m"}, + }, + ), + "with-sidecar-and-app-container", + ), + expUncoreCache: cpuset.New(1), + }, + { + description: "GuPodMainAndManySidecarContainer, DualSocketHTUncore, ExpectAllocOneUncore, FullUncoreAvail", + topo: topoDualSocketSingleNumaPerSocketSMTUncore, + numReservedCPUs: 8, + reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 12 + 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: topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(0), + ).Union( + topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUsInUncoreCaches(12), + ), + ), + 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", + ), + expUncoreCache: cpuset.New(1), + }, + { + description: "GuPodMainAndSidecarContainer, DualSocketHTUncore, ExpectAllocTwoUncore", + topo: topoDualSocketSingleNumaPerSocketSMTUncore, + numReservedCPUs: 8, + reserved: cpuset.New(0, 1, 96, 97, 192, 193, 288, 289), // note 4 cpus taken from uncore 0, 4 from uncore 12 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + stDefaultCPUSet: topoDualSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs(), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, + {"2000m", "2000m"}, + }, + ), + "with-app-container-and-sidecar", + ), + expUncoreCache: cpuset.New(0, 1), // expected CPU alignment to UncoreCacheIDs 0-1 + }, + { + description: "GuPodSingleContainer, SingleSocketSMTSmallUncore, ExpectAllocOneUncore", + topo: topoSingleSocketSingleNumaPerSocketSMTSmallUncore, + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 64, 65), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + stDefaultCPUSet: topoSingleSocketSingleNumaPerSocketSMTSmallUncore.CPUDetails.CPUs(), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"8000m", "8000m"}, + }, + ), + "with-app-container-saturating", + ), + expUncoreCache: cpuset.New(1), + }, + { + // Best-effort policy allows larger containers to be scheduled using a packed method + description: "GuPodSingleContainer, SingleSocketSMTSmallUncore, ExpectAllocTwoUncore", + topo: topoSingleSocketSingleNumaPerSocketSMTSmallUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 64, 65), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // Uncore 1 fully allocated + stDefaultCPUSet: topoSingleSocketSingleNumaPerSocketSMTSmallUncore.CPUDetails.CPUs().Difference( + topoSingleSocketSingleNumaPerSocketSMTSmallUncore.CPUDetails.CPUsInUncoreCaches(1), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, // larger than topology's uncore cache + }, + ), + "with-app-container-saturating", + ), + expUncoreCache: cpuset.New(0, 2), + }, + { + // Best-effort policy allows larger containers to be scheduled using a packed method + description: "GuPodSingleContainer, SingleSocketNoSMTSmallUncore, FragmentedUncore, ExpectAllocThreeUncore", + topo: topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore, // 4 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 2, 3), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // Uncore 2, 3, and 5 fully allocated + stDefaultCPUSet: topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore.CPUDetails.CPUsInUncoreCaches(2), + ).Union( + topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore.CPUDetails.CPUsInUncoreCaches(3), + ).Union( + topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore.CPUDetails.CPUsInUncoreCaches(5), + ), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, // 3 uncore cache's worth of CPUs + }, + ), + "with-app-container-saturating", + ), + expUncoreCache: cpuset.New(1, 4, 6), + }, + { + // Uncore cache alignment following a packed methodology + description: "GuPodMultiContainer, DualSocketSMTUncore, FragmentedUncore, ExpectAllocOneUncore", + topo: topoSmallDualSocketSingleNumaPerSocketNoSMTUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 32, 33), // note 2 cpus taken from uncore 0, 2 from uncore 4 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // uncore 1 fully allocated + stDefaultCPUSet: topoSmallDualSocketSingleNumaPerSocketNoSMTUncore.CPUDetails.CPUs().Difference( + topoSmallDualSocketSingleNumaPerSocketNoSMTUncore.CPUDetails.CPUsInUncoreCaches(1), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"4000m", "4000m"}, + {"2000m", "2000m"}, + }, + ), + "with-multiple-container", + ), + expUncoreCache: cpuset.New(0), + }, + { + // Uncore cache alignment following a packed methodology + description: "GuPodMultiContainer, DualSocketSMTUncore, FragmentedUncore, ExpectAllocTwoUncore", + topo: topoSmallDualSocketSingleNumaPerSocketNoSMTUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 32, 33), // note 2 cpus taken from uncore 0, 2 from uncore 4 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // uncore 1 fully allocated + stDefaultCPUSet: topoSmallDualSocketSingleNumaPerSocketNoSMTUncore.CPUDetails.CPUs().Difference( + topoSmallDualSocketSingleNumaPerSocketNoSMTUncore.CPUDetails.CPUsInUncoreCaches(1), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"4000m", "4000m"}, + {"4000m", "4000m"}, + }, + ), + "with-multiple-container", + ), + expUncoreCache: cpuset.New(0, 2), + }, + { + // CPU assignments able to fit on partially available uncore cache + description: "GuPodMultiContainer, LargeSingleSocketSMTUncore, PartialUncoreFit, ExpectAllocTwoUncore", + topo: topoLargeSingleSocketSingleNumaPerSocketSMTUncore, // 16 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 128, 129), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // 4 cpus allocated from uncore 1 + stDefaultCPUSet: topoLargeSingleSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New(8, 9, 136, 137), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, + {"12000m", "12000m"}, + }, + ), + "with-multiple-container", + ), + expUncoreCache: cpuset.New(0, 1), + }, + { + // CPU assignments unable to fit on partially available uncore cache + description: "GuPodMultiContainer, LargeSingleSocketSMTUncore, PartialUncoreNoFit, ExpectAllocTwoUncore", + topo: topoLargeSingleSocketSingleNumaPerSocketSMTUncore, // 16 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 128, 129), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // 4 cpus allocated from uncore 1 + stDefaultCPUSet: topoLargeSingleSocketSingleNumaPerSocketSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New(8, 9, 136, 137), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"14000m", "14000m"}, + {"14000m", "14000m"}, + }, + ), + "with-multiple-container", + ), + expUncoreCache: cpuset.New(2, 3), + }, + { + // Full NUMA allocation on split-cache architecture with NPS=2 + description: "GuPodLargeSingleContainer, DualSocketNoSMTUncore, FullNUMAsAvail, ExpectAllocFullNUMA", + topo: topoDualSocketMultiNumaPerSocketUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 2, 3), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + stDefaultCPUSet: topoDualSocketMultiNumaPerSocketUncore.CPUDetails.CPUs(), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"48000m", "48000m"}, // NUMA's worth of CPUs + }, + ), + "with-large-single-container", + ), + expUncoreCache: cpuset.New(6, 7, 8, 9, 10, 11), // uncore caches of NUMA Node 1 + }, + { + // PreferAlignByUnCoreCacheOption will not impact monolithic x86 architectures + description: "GuPodSingleContainer, MonoUncoreCacheHT, ExpectAllocCPUSet", + topo: topoDualSocketSubNumaPerSocketHTMonolithicUncore, // Uncore cache CPUs = Socket CPUs + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 120, 121), // note 4 cpus taken from first 2 cores + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + stDefaultCPUSet: topoDualSocketSubNumaPerSocketHTMonolithicUncore.CPUDetails.CPUs(), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"6000m", "6000m"}, + }, + ), + "with-single-container", + ), + expCPUAlloc: true, + expCSet: cpuset.New(2, 3, 4, 122, 123, 124), + expUncoreCache: cpuset.New(0), + }, + { + // PreferAlignByUnCoreCacheOption on fragmented monolithic cache x86 architectures + description: "GuPodSingleContainer, MonoUncoreCacheHT, ExpectAllocCPUSet", + topo: topoSingleSocketSingleNumaPerSocketPCoreHTMonolithicUncore, // Uncore cache CPUs = Socket CPUs + numReservedCPUs: 2, + reserved: cpuset.New(0, 1), + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // CPUs 4-7 allocated + stDefaultCPUSet: topoSingleSocketSingleNumaPerSocketPCoreHTMonolithicUncore.CPUDetails.CPUs().Difference( + cpuset.New(4, 5, 6, 7), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"6000m", "6000m"}, + }, + ), + "with-single-container", + ), + expCPUAlloc: true, + expCSet: cpuset.New(2, 3, 8, 9, 16, 17), // identical to default packed assignment + expUncoreCache: cpuset.New(0), + }, + { + // Compatibility with ARM-based split cache architectures + description: "GuPodSingleContainer, LargeSingleSocketUncore, ExpectAllocOneUncore", + topo: topoLargeSingleSocketSingleNumaPerSocketUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 2, 3), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + stDefaultCPUSet: topoLargeSingleSocketSingleNumaPerSocketUncore.CPUDetails.CPUs(), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"8000m", "8000m"}, + }, + ), + "with-single-container", + ), + expUncoreCache: cpuset.New(1), + }, + { + // PreferAlignByUnCoreCacheOption on fragmented monolithic cache ARM architectures + description: "GuPodSingleContainer, MonoUncoreCacheHT, ExpectFragmentedAllocCPUSet", + topo: topoSingleSocketSingleNumaPerSocketUncore, // Uncore cache CPUs = Socket CPUs + numReservedCPUs: 2, + reserved: cpuset.New(0, 1), + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // CPUs 6-9, 12-15, 18-19 allocated + stDefaultCPUSet: topoSingleSocketSingleNumaPerSocketUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + cpuset.New(6, 7, 8, 9), + ).Union( + cpuset.New(12, 13, 14, 15), + ).Union( + cpuset.New(18, 19), + ), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"12000m", "12000m"}, + }, + ), + "with-single-container", + ), + expCPUAlloc: true, + expCSet: cpuset.New(2, 3, 4, 5, 10, 11, 16, 17, 20, 21, 22, 23), // identical to default packed assignment + expUncoreCache: cpuset.New(0), + }, + { + // Best-effort policy can result in multiple uncore caches + // Every uncore cache is partially allocated + description: "GuPodSingleContainer, SingleSocketUncore, PartialUncore, ExpectBestEffortAllocTwoUncore", + topo: topoSmallSingleSocketSingleNumaPerSocketNoSMTUncore, // 8 cpus per uncore + numReservedCPUs: 4, + reserved: cpuset.New(0, 1, 2, 3), // note 4 cpus taken from uncore 0 + cpuPolicyOptions: map[string]string{ + FullPCPUsOnlyOption: "true", + PreferAlignByUnCoreCacheOption: "true", + }, + stAssignments: state.ContainerCPUAssignments{}, + // Every uncore has partially allocated 4 CPUs + stDefaultCPUSet: topoSmallSingleSocketSingleNumaPerSocketNoSMTUncore.CPUDetails.CPUs().Difference( + cpuset.New().Union( + cpuset.New(8, 9, 10, 11), + ).Union( + cpuset.New(16, 17, 18, 19), + ).Union( + cpuset.New(24, 25, 26, 27), + ), + ), + pod: WithPodUID( + makeMultiContainerPod( + []struct{ request, limit string }{}, // init container + []struct{ request, limit string }{ // app container + {"8000m", "8000m"}, // full uncore cache worth of cpus + }, + ), + "with-single-container", + ), + expUncoreCache: cpuset.New(0, 1), // best-effort across uncore cache 0 and 1 + }, + } + + 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) + } + } + + if testCase.expCPUAlloc { + container := &testCase.pod.Spec.Containers[0] + cset, found := st.assignments[string(testCase.pod.UID)][container.Name] + if !found { + t.Errorf("StaticPolicy Allocate() error (%v). expected container %v to be present in assignments %v", + testCase.description, container.Name, st.assignments) + } + if !testCase.expCSet.Equals(cset) { + t.Errorf("StaticPolicy Allocate() error (%v). expected CPUSet %v but got %v", + testCase.description, testCase.expCSet, cset) + } + return + } + + 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.Equals(testCase.expUncoreCache) { + t.Errorf("StaticPolicy Allocate() error (%v). expected UncoreCacheIDs %v but got %v", + testCase.description, testCase.expUncoreCache, ids) + } + }) + } +} + type staticPolicyOptionTestCase struct { description string policyOptions map[string]string @@ -1274,3 +1834,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..5c983b2c22d 100644 --- a/pkg/kubelet/cm/cpumanager/policy_test.go +++ b/pkg/kubelet/cm/cpumanager/policy_test.go @@ -993,4 +993,1794 @@ 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 + */ + topoDualSocketSingleNumaPerSocketSMTUncore = &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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 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}, + 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: 8}, + 65: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 66: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 67: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 68: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 69: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 70: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 71: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 72: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 73: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 74: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 75: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 76: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 77: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 78: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 79: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 80: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 81: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 82: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 83: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 84: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 85: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 86: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 87: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 88: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 89: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 90: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 91: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 92: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 93: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 94: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 95: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 96: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 96, UncoreCacheID: 12}, + 97: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 97, UncoreCacheID: 12}, + 98: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 98, UncoreCacheID: 12}, + 99: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 99, UncoreCacheID: 12}, + 100: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 100, UncoreCacheID: 12}, + 101: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 101, UncoreCacheID: 12}, + 102: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 102, UncoreCacheID: 12}, + 103: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 103, UncoreCacheID: 12}, + 104: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 104, UncoreCacheID: 13}, + 105: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 105, UncoreCacheID: 13}, + 106: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 106, UncoreCacheID: 13}, + 107: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 107, UncoreCacheID: 13}, + 108: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 108, UncoreCacheID: 13}, + 109: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 109, UncoreCacheID: 13}, + 110: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 110, UncoreCacheID: 13}, + 111: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 111, UncoreCacheID: 13}, + 112: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 112, UncoreCacheID: 14}, + 113: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 113, UncoreCacheID: 14}, + 114: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 114, UncoreCacheID: 14}, + 115: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 115, UncoreCacheID: 14}, + 116: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 116, UncoreCacheID: 14}, + 117: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 117, UncoreCacheID: 14}, + 118: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 118, UncoreCacheID: 14}, + 119: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 119, UncoreCacheID: 14}, + 120: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 120, UncoreCacheID: 15}, + 121: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 121, UncoreCacheID: 15}, + 122: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 122, UncoreCacheID: 15}, + 123: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 123, UncoreCacheID: 15}, + 124: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 124, UncoreCacheID: 15}, + 125: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 125, UncoreCacheID: 15}, + 126: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 126, UncoreCacheID: 15}, + 127: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 127, UncoreCacheID: 15}, + 128: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 128, UncoreCacheID: 16}, + 129: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 129, UncoreCacheID: 16}, + 130: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 130, UncoreCacheID: 16}, + 131: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 131, UncoreCacheID: 16}, + 132: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 132, UncoreCacheID: 16}, + 133: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 133, UncoreCacheID: 16}, + 134: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 134, UncoreCacheID: 16}, + 135: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 135, UncoreCacheID: 16}, + 136: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 136, UncoreCacheID: 17}, + 137: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 137, UncoreCacheID: 17}, + 138: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 138, UncoreCacheID: 17}, + 139: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 139, UncoreCacheID: 17}, + 140: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 140, UncoreCacheID: 17}, + 141: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 141, UncoreCacheID: 17}, + 142: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 142, UncoreCacheID: 17}, + 143: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 143, UncoreCacheID: 17}, + 144: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 144, UncoreCacheID: 18}, + 145: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 145, UncoreCacheID: 18}, + 146: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 146, UncoreCacheID: 18}, + 147: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 147, UncoreCacheID: 18}, + 148: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 148, UncoreCacheID: 18}, + 149: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 149, UncoreCacheID: 18}, + 150: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 150, UncoreCacheID: 18}, + 151: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 151, UncoreCacheID: 18}, + 152: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 152, UncoreCacheID: 19}, + 153: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 153, UncoreCacheID: 19}, + 154: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 154, UncoreCacheID: 19}, + 155: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 155, UncoreCacheID: 19}, + 156: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 156, UncoreCacheID: 19}, + 157: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 157, UncoreCacheID: 19}, + 158: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 158, UncoreCacheID: 19}, + 159: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 159, UncoreCacheID: 19}, + 160: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 160, UncoreCacheID: 20}, + 161: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 161, UncoreCacheID: 20}, + 162: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 162, UncoreCacheID: 20}, + 163: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 163, UncoreCacheID: 20}, + 164: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 164, UncoreCacheID: 20}, + 165: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 165, UncoreCacheID: 20}, + 166: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 166, UncoreCacheID: 20}, + 167: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 167, UncoreCacheID: 20}, + 168: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 168, UncoreCacheID: 21}, + 169: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 169, UncoreCacheID: 21}, + 170: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 170, UncoreCacheID: 21}, + 171: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 171, UncoreCacheID: 21}, + 172: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 172, UncoreCacheID: 21}, + 173: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 173, UncoreCacheID: 21}, + 174: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 174, UncoreCacheID: 21}, + 175: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 175, UncoreCacheID: 21}, + 176: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 176, UncoreCacheID: 22}, + 177: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 177, UncoreCacheID: 22}, + 178: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 178, UncoreCacheID: 22}, + 179: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 179, UncoreCacheID: 22}, + 180: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 180, UncoreCacheID: 22}, + 181: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 181, UncoreCacheID: 22}, + 182: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 182, UncoreCacheID: 22}, + 183: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 183, UncoreCacheID: 22}, + 184: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 184, UncoreCacheID: 23}, + 185: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 185, UncoreCacheID: 23}, + 186: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 186, UncoreCacheID: 23}, + 187: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 187, UncoreCacheID: 23}, + 188: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 188, UncoreCacheID: 23}, + 189: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 189, UncoreCacheID: 23}, + 190: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 190, UncoreCacheID: 23}, + 191: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 191, UncoreCacheID: 23}, + 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}, + 200: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 201: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 202: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 203: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 204: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 205: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 206: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 207: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 208: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 209: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 210: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 211: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 212: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 213: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 214: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 215: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 216: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 217: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 218: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 219: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 220: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 221: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 222: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 223: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 224: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 225: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 226: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 227: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 228: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 229: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 230: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 231: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 232: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 233: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 234: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 235: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 236: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 237: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 238: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 239: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 240: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 241: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 242: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 243: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 244: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 245: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 246: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 247: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 248: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 7}, + 249: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 7}, + 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: 8}, + 257: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 258: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 259: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 260: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 261: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 262: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 263: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 264: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 265: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 266: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 267: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 268: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 269: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 270: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 271: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 272: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 273: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 274: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 275: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 276: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 277: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 278: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 279: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 280: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 281: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 282: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 283: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 284: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 285: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 286: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 287: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 288: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 96, UncoreCacheID: 12}, + 289: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 97, UncoreCacheID: 12}, + 290: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 98, UncoreCacheID: 12}, + 291: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 99, UncoreCacheID: 12}, + 292: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 100, UncoreCacheID: 12}, + 293: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 101, UncoreCacheID: 12}, + 294: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 102, UncoreCacheID: 12}, + 295: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 103, UncoreCacheID: 12}, + 296: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 104, UncoreCacheID: 13}, + 297: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 105, UncoreCacheID: 13}, + 298: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 106, UncoreCacheID: 13}, + 299: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 107, UncoreCacheID: 13}, + 300: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 108, UncoreCacheID: 13}, + 301: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 109, UncoreCacheID: 13}, + 302: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 110, UncoreCacheID: 13}, + 303: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 111, UncoreCacheID: 13}, + 304: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 112, UncoreCacheID: 14}, + 305: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 113, UncoreCacheID: 14}, + 306: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 114, UncoreCacheID: 14}, + 307: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 115, UncoreCacheID: 14}, + 308: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 116, UncoreCacheID: 14}, + 309: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 117, UncoreCacheID: 14}, + 310: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 118, UncoreCacheID: 14}, + 311: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 119, UncoreCacheID: 14}, + 312: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 120, UncoreCacheID: 15}, + 313: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 121, UncoreCacheID: 15}, + 314: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 122, UncoreCacheID: 15}, + 315: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 123, UncoreCacheID: 15}, + 316: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 124, UncoreCacheID: 15}, + 317: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 125, UncoreCacheID: 15}, + 318: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 126, UncoreCacheID: 15}, + 319: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 127, UncoreCacheID: 15}, + 320: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 128, UncoreCacheID: 16}, + 321: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 129, UncoreCacheID: 16}, + 322: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 130, UncoreCacheID: 16}, + 323: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 131, UncoreCacheID: 16}, + 324: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 132, UncoreCacheID: 16}, + 325: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 133, UncoreCacheID: 16}, + 326: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 134, UncoreCacheID: 16}, + 327: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 135, UncoreCacheID: 16}, + 328: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 136, UncoreCacheID: 17}, + 329: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 137, UncoreCacheID: 17}, + 330: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 138, UncoreCacheID: 17}, + 331: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 139, UncoreCacheID: 17}, + 332: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 140, UncoreCacheID: 17}, + 333: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 141, UncoreCacheID: 17}, + 334: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 142, UncoreCacheID: 17}, + 335: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 143, UncoreCacheID: 17}, + 336: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 144, UncoreCacheID: 18}, + 337: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 145, UncoreCacheID: 18}, + 338: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 146, UncoreCacheID: 18}, + 339: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 147, UncoreCacheID: 18}, + 340: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 148, UncoreCacheID: 18}, + 341: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 149, UncoreCacheID: 18}, + 342: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 150, UncoreCacheID: 18}, + 343: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 151, UncoreCacheID: 18}, + 344: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 152, UncoreCacheID: 19}, + 345: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 153, UncoreCacheID: 19}, + 346: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 154, UncoreCacheID: 19}, + 347: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 155, UncoreCacheID: 19}, + 348: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 156, UncoreCacheID: 19}, + 349: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 157, UncoreCacheID: 19}, + 350: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 158, UncoreCacheID: 19}, + 351: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 159, UncoreCacheID: 19}, + 352: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 160, UncoreCacheID: 20}, + 353: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 161, UncoreCacheID: 20}, + 354: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 162, UncoreCacheID: 20}, + 355: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 163, UncoreCacheID: 20}, + 356: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 164, UncoreCacheID: 20}, + 357: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 165, UncoreCacheID: 20}, + 358: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 166, UncoreCacheID: 20}, + 359: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 167, UncoreCacheID: 20}, + 360: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 168, UncoreCacheID: 21}, + 361: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 169, UncoreCacheID: 21}, + 362: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 170, UncoreCacheID: 21}, + 363: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 171, UncoreCacheID: 21}, + 364: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 172, UncoreCacheID: 21}, + 365: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 173, UncoreCacheID: 21}, + 366: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 174, UncoreCacheID: 21}, + 367: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 175, UncoreCacheID: 21}, + 368: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 176, UncoreCacheID: 22}, + 369: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 177, UncoreCacheID: 22}, + 370: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 178, UncoreCacheID: 22}, + 371: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 179, UncoreCacheID: 22}, + 372: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 180, UncoreCacheID: 22}, + 373: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 181, UncoreCacheID: 22}, + 374: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 182, UncoreCacheID: 22}, + 375: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 183, UncoreCacheID: 22}, + 376: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 184, UncoreCacheID: 23}, + 377: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 185, UncoreCacheID: 23}, + 378: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 186, UncoreCacheID: 23}, + 379: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 187, UncoreCacheID: 23}, + 380: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 188, UncoreCacheID: 23}, + 381: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 189, UncoreCacheID: 23}, + 382: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 190, UncoreCacheID: 23}, + 383: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 191, UncoreCacheID: 23}, + }, + } + /* + Topology from single AMD EPYC 7702P 64C; lscpu excerpt + CPU(s): 128 + On-line CPU(s) list: 0-127 + Thread(s) per core: 2 + Core(s) per socket: 64 + Socket(s): 1 + NUMA node(s): 1 + NUMA node0 CPU(s): 0-127 + */ + topoSingleSocketSingleNumaPerSocketSMTSmallUncore = &topology.CPUTopology{ + NumCPUs: 128, + NumCores: 64, + NumUncoreCache: 16, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 1}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 1}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 1}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 1}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 2}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 2}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 2}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 2}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 3}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 3}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 3}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 3}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 4}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 4}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 4}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 4}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 5}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 5}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 5}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 5}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 6}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 6}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 6}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 6}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 7}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 7}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 7}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 7}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 8}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 8}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 8}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 8}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 9}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 9}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 9}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 9}, + 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: 11}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 11}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 11}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 11}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 12}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 12}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 12}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 12}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 13}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 13}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 13}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 13}, + 56: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 14}, + 57: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 14}, + 58: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 14}, + 59: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 14}, + 60: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 15}, + 61: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 15}, + 62: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 15}, + 63: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 15}, + 64: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 0, UncoreCacheID: 0}, + 65: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 1, UncoreCacheID: 0}, + 66: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 67: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 68: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 1}, + 69: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 1}, + 70: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 1}, + 71: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 1}, + 72: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 2}, + 73: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 2}, + 74: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 2}, + 75: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 2}, + 76: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 3}, + 77: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 3}, + 78: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 3}, + 79: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 3}, + 80: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 4}, + 81: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 4}, + 82: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 4}, + 83: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 4}, + 84: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 5}, + 85: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 5}, + 86: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 5}, + 87: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 5}, + 88: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 6}, + 89: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 6}, + 90: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 6}, + 91: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 6}, + 92: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 7}, + 93: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 7}, + 94: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 7}, + 95: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 7}, + 96: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 8}, + 97: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 8}, + 98: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 8}, + 99: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 8}, + 100: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 9}, + 101: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 9}, + 102: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 9}, + 103: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 9}, + 104: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 10}, + 105: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 10}, + 106: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 10}, + 107: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 10}, + 108: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 11}, + 109: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 11}, + 110: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 11}, + 111: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 11}, + 112: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 12}, + 113: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 12}, + 114: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 12}, + 115: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 12}, + 116: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 13}, + 117: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 13}, + 118: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 13}, + 119: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 13}, + 120: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 14}, + 121: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 14}, + 122: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 14}, + 123: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 14}, + 124: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 15}, + 125: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 15}, + 126: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 15}, + 127: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 15}, + }, + } + /* + Topology from single AMD EPYC 7702P 64C; lscpu excerpt + CPU(s): 64 + On-line CPU(s) list: 0-63 + Thread(s) per core: 1 + Core(s) per socket: 64 + Socket(s): 1 + NUMA node(s): 1 + NUMA node0 CPU(s): 0-63 + */ + topoSingleSocketSingleNumaPerSocketNoSMTSmallUncore = &topology.CPUTopology{ + NumCPUs: 128, + NumCores: 64, + NumUncoreCache: 16, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 1}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 1}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 1}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 1}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 2}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 2}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 2}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 2}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 3}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 3}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 3}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 3}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 4}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 4}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 4}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 4}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 5}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 5}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 5}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 5}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 6}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 6}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 6}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 6}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 7}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 7}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 7}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 7}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 8}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 8}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 8}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 8}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 9}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 9}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 9}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 9}, + 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: 11}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 11}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 11}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 11}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 12}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 12}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 12}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 12}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 13}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 13}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 13}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 13}, + 56: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 14}, + 57: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 14}, + 58: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 14}, + 59: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 14}, + 60: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 15}, + 61: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 15}, + 62: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 15}, + 63: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 15}, + }, + } + /* + Topology from dual AMD EPYC 7303 32C; lscpu excerpt + CPU(s): 64 + On-line CPU(s) list: 0-127 + Thread(s) per core: 1 + Core(s) per socket: 32 + Socket(s): 2 + NUMA node(s): 2 + NUMA node0 CPU(s): 0-31,64-95 + NUMA node1 CPU(s): 32-63,96-127 + */ + topoSmallDualSocketSingleNumaPerSocketNoSMTUncore = &topology.CPUTopology{ + NumCPUs: 64, + NumCores: 64, + NumUncoreCache: 8, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 32: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 32, UncoreCacheID: 4}, + 33: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 33, UncoreCacheID: 4}, + 34: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 34, UncoreCacheID: 4}, + 35: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 35, UncoreCacheID: 4}, + 36: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 36, UncoreCacheID: 4}, + 37: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 37, UncoreCacheID: 4}, + 38: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 38, UncoreCacheID: 4}, + 39: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 39, UncoreCacheID: 4}, + 40: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 40, UncoreCacheID: 5}, + 41: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 41, UncoreCacheID: 5}, + 42: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 42, UncoreCacheID: 5}, + 43: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 43, UncoreCacheID: 5}, + 44: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 44, UncoreCacheID: 5}, + 45: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 45, UncoreCacheID: 5}, + 46: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 46, UncoreCacheID: 5}, + 47: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 47, UncoreCacheID: 5}, + 48: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 48, UncoreCacheID: 6}, + 49: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 49, UncoreCacheID: 6}, + 50: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 50, UncoreCacheID: 6}, + 51: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 51, UncoreCacheID: 6}, + 52: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 52, UncoreCacheID: 6}, + 53: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 53, UncoreCacheID: 6}, + 54: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 54, UncoreCacheID: 6}, + 55: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 55, UncoreCacheID: 6}, + 56: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 56, UncoreCacheID: 7}, + 57: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 57, UncoreCacheID: 7}, + 58: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 58, UncoreCacheID: 7}, + 59: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 59, UncoreCacheID: 7}, + 60: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 60, UncoreCacheID: 7}, + 61: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 61, UncoreCacheID: 7}, + 62: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 62, UncoreCacheID: 7}, + 63: topology.CPUInfo{NUMANodeID: 1, SocketID: 1, CoreID: 63, UncoreCacheID: 7}, + }, + } + /* + Topology from single AMD EPYC 7303 32C; lscpu excerpt + CPU(s): 32 + On-line CPU(s) list: 0-31 + Thread(s) per core: 1 + Core(s) per socket: 32 + Socket(s): 1 + NUMA node(s): 1 + NUMA node0 CPU(s): 0-31 + */ + topoSmallSingleSocketSingleNumaPerSocketNoSMTUncore = &topology.CPUTopology{ + NumCPUs: 32, + NumCores: 32, + NumUncoreCache: 4, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + }, + } + /* + Topology from dual AMD EPYC 9754 128C; lscpu excerpt + CPU(s): 128 + On-line CPU(s) list: 0-255 + Thread(s) per core: 2 + Core(s) per socket: 128 + Socket(s): 1 + NUMA node(s): 1 + NUMA node0 CPU(s): 0-255 + */ + topoLargeSingleSocketSingleNumaPerSocketSMTUncore = &topology.CPUTopology{ + NumCPUs: 256, + NumCores: 128, + NumUncoreCache: 16, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 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}, + 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: 8}, + 65: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 66: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 67: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 68: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 69: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 70: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 71: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 72: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 73: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 74: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 75: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 76: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 77: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 78: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 79: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 80: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 81: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 82: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 83: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 84: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 85: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 86: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 87: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 88: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 89: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 90: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 91: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 92: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 93: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 94: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 95: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 96: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 96, UncoreCacheID: 12}, + 97: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 97, UncoreCacheID: 12}, + 98: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 98, UncoreCacheID: 12}, + 99: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 99, UncoreCacheID: 12}, + 100: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 100, UncoreCacheID: 12}, + 101: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 101, UncoreCacheID: 12}, + 102: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 102, UncoreCacheID: 12}, + 103: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 103, UncoreCacheID: 12}, + 104: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 104, UncoreCacheID: 13}, + 105: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 105, UncoreCacheID: 13}, + 106: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 106, UncoreCacheID: 13}, + 107: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 107, UncoreCacheID: 13}, + 108: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 108, UncoreCacheID: 13}, + 109: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 109, UncoreCacheID: 13}, + 110: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 110, UncoreCacheID: 13}, + 111: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 111, UncoreCacheID: 13}, + 112: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 112, UncoreCacheID: 14}, + 113: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 113, UncoreCacheID: 14}, + 114: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 114, UncoreCacheID: 14}, + 115: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 115, UncoreCacheID: 14}, + 116: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 116, UncoreCacheID: 14}, + 117: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 117, UncoreCacheID: 14}, + 118: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 118, UncoreCacheID: 14}, + 119: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 119, UncoreCacheID: 14}, + 120: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 120, UncoreCacheID: 15}, + 121: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 121, UncoreCacheID: 15}, + 122: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 122, UncoreCacheID: 15}, + 123: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 123, UncoreCacheID: 15}, + 124: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 124, UncoreCacheID: 15}, + 125: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 125, UncoreCacheID: 15}, + 126: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 126, UncoreCacheID: 15}, + 127: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 127, UncoreCacheID: 15}, + 128: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 0, UncoreCacheID: 0}, + 129: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 1, UncoreCacheID: 0}, + 130: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 131: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 132: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 133: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 134: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 135: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 136: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 137: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 138: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 139: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 140: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 141: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 142: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 143: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 144: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 145: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 146: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 147: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 148: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 149: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 150: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 151: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 152: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 153: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 154: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 155: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 156: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 157: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 158: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 159: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 160: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 161: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 162: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 163: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 164: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 165: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 166: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 167: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 168: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 169: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 170: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 171: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 172: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 173: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 174: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 175: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 176: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 177: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 178: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 179: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 180: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 181: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 182: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 183: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 184: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 7}, + 185: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 7}, + 186: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 7}, + 187: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 7}, + 188: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 7}, + 189: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 7}, + 190: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 7}, + 191: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 7}, + 192: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 64, UncoreCacheID: 8}, + 193: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 194: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 195: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 196: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 197: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 198: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 199: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 200: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 201: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 202: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 203: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 204: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 205: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 206: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 207: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 208: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 209: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 210: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 211: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 212: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 213: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 214: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 215: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 216: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 217: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 218: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 219: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 220: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 221: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 222: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 223: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 224: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 96, UncoreCacheID: 12}, + 225: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 97, UncoreCacheID: 12}, + 226: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 98, UncoreCacheID: 12}, + 227: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 99, UncoreCacheID: 12}, + 228: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 100, UncoreCacheID: 12}, + 229: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 101, UncoreCacheID: 12}, + 230: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 102, UncoreCacheID: 12}, + 231: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 103, UncoreCacheID: 12}, + 232: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 104, UncoreCacheID: 13}, + 233: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 105, UncoreCacheID: 13}, + 234: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 106, UncoreCacheID: 13}, + 235: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 107, UncoreCacheID: 13}, + 236: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 108, UncoreCacheID: 13}, + 237: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 109, UncoreCacheID: 13}, + 238: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 110, UncoreCacheID: 13}, + 239: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 111, UncoreCacheID: 13}, + 240: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 112, UncoreCacheID: 14}, + 241: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 113, UncoreCacheID: 14}, + 242: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 114, UncoreCacheID: 14}, + 243: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 115, UncoreCacheID: 14}, + 244: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 116, UncoreCacheID: 14}, + 245: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 117, UncoreCacheID: 14}, + 246: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 118, UncoreCacheID: 14}, + 247: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 119, UncoreCacheID: 14}, + 248: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 120, UncoreCacheID: 15}, + 249: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 121, UncoreCacheID: 15}, + 250: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 122, UncoreCacheID: 15}, + 251: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 123, UncoreCacheID: 15}, + 252: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 124, UncoreCacheID: 15}, + 253: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 125, UncoreCacheID: 15}, + 254: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 126, UncoreCacheID: 15}, + 255: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 127, UncoreCacheID: 15}, + }, + } + /* + Topology from dual AMD EPYC 9654 96-Core Processor; lscpu excerpt + CPU(s): 192 + On-line CPU(s) list: 0-191 + Thread(s) per core: 1 + Core(s) per socket: 96 + Socket(s): 2 + NUMA node(s): 4 + NUMA node0 CPU(s): 0-47 + NUMA node1 CPU(s): 48-95 + NUMA node2 CPU(s): 96-143 + NUMA node3 CPU(s): 144-191 + */ + topoDualSocketMultiNumaPerSocketUncore = &topology.CPUTopology{ + NumCPUs: 192, + NumCores: 192, + NumUncoreCache: 24, + NumSockets: 2, + NumNUMANodes: 4, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 48: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 49: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 50: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 51: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 52: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 53: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 54: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 55: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 56: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 56, UncoreCacheID: 7}, + 57: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 57, UncoreCacheID: 7}, + 58: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 58, UncoreCacheID: 7}, + 59: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 59, UncoreCacheID: 7}, + 60: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 60, UncoreCacheID: 7}, + 61: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 61, UncoreCacheID: 7}, + 62: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 62, UncoreCacheID: 7}, + 63: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 63, UncoreCacheID: 7}, + 64: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 64, UncoreCacheID: 8}, + 65: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 66: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 67: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 68: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 69: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 70: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 71: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 72: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 73: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 74: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 75: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 76: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 77: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 78: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 79: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 80: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 81: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 82: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 83: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 84: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 85: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 86: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 87: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 88: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 89: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 90: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 91: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 92: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 93: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 94: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 95: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 96: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 0, UncoreCacheID: 12}, + 97: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 1, UncoreCacheID: 12}, + 98: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 2, UncoreCacheID: 12}, + 99: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 3, UncoreCacheID: 12}, + 100: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 4, UncoreCacheID: 12}, + 101: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 5, UncoreCacheID: 12}, + 102: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 6, UncoreCacheID: 12}, + 103: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 7, UncoreCacheID: 12}, + 104: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 8, UncoreCacheID: 13}, + 105: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 9, UncoreCacheID: 13}, + 106: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 10, UncoreCacheID: 13}, + 107: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 11, UncoreCacheID: 13}, + 108: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 12, UncoreCacheID: 13}, + 109: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 13, UncoreCacheID: 13}, + 110: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 14, UncoreCacheID: 13}, + 111: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 15, UncoreCacheID: 13}, + 112: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 16, UncoreCacheID: 14}, + 113: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 17, UncoreCacheID: 14}, + 114: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 18, UncoreCacheID: 14}, + 115: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 19, UncoreCacheID: 14}, + 116: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 20, UncoreCacheID: 14}, + 117: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 21, UncoreCacheID: 14}, + 118: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 22, UncoreCacheID: 14}, + 119: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 23, UncoreCacheID: 14}, + 120: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 24, UncoreCacheID: 15}, + 121: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 25, UncoreCacheID: 15}, + 122: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 26, UncoreCacheID: 15}, + 123: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 27, UncoreCacheID: 15}, + 124: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 28, UncoreCacheID: 15}, + 125: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 29, UncoreCacheID: 15}, + 126: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 30, UncoreCacheID: 15}, + 127: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 31, UncoreCacheID: 15}, + 128: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 32, UncoreCacheID: 16}, + 129: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 33, UncoreCacheID: 16}, + 130: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 34, UncoreCacheID: 16}, + 131: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 35, UncoreCacheID: 16}, + 132: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 36, UncoreCacheID: 16}, + 133: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 37, UncoreCacheID: 16}, + 134: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 38, UncoreCacheID: 16}, + 135: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 39, UncoreCacheID: 16}, + 136: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 40, UncoreCacheID: 17}, + 137: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 41, UncoreCacheID: 17}, + 138: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 42, UncoreCacheID: 17}, + 139: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 43, UncoreCacheID: 17}, + 140: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 44, UncoreCacheID: 17}, + 141: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 45, UncoreCacheID: 17}, + 142: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 46, UncoreCacheID: 17}, + 143: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 47, UncoreCacheID: 17}, + 144: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 48, UncoreCacheID: 18}, + 145: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 49, UncoreCacheID: 18}, + 146: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 50, UncoreCacheID: 18}, + 147: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 51, UncoreCacheID: 18}, + 148: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 52, UncoreCacheID: 18}, + 149: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 53, UncoreCacheID: 18}, + 150: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 54, UncoreCacheID: 18}, + 151: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 55, UncoreCacheID: 18}, + 152: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 56, UncoreCacheID: 19}, + 153: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 57, UncoreCacheID: 19}, + 154: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 58, UncoreCacheID: 19}, + 155: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 59, UncoreCacheID: 19}, + 156: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 60, UncoreCacheID: 19}, + 157: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 61, UncoreCacheID: 19}, + 158: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 62, UncoreCacheID: 19}, + 159: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 63, UncoreCacheID: 19}, + 160: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 64, UncoreCacheID: 20}, + 161: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 65, UncoreCacheID: 20}, + 162: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 66, UncoreCacheID: 20}, + 163: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 67, UncoreCacheID: 20}, + 164: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 68, UncoreCacheID: 20}, + 165: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 69, UncoreCacheID: 20}, + 166: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 70, UncoreCacheID: 20}, + 167: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 71, UncoreCacheID: 20}, + 168: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 72, UncoreCacheID: 21}, + 169: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 73, UncoreCacheID: 21}, + 170: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 74, UncoreCacheID: 21}, + 171: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 75, UncoreCacheID: 21}, + 172: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 76, UncoreCacheID: 21}, + 173: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 77, UncoreCacheID: 21}, + 174: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 78, UncoreCacheID: 21}, + 175: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 79, UncoreCacheID: 21}, + 176: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 80, UncoreCacheID: 22}, + 177: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 81, UncoreCacheID: 22}, + 178: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 82, UncoreCacheID: 22}, + 179: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 83, UncoreCacheID: 22}, + 180: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 84, UncoreCacheID: 22}, + 181: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 85, UncoreCacheID: 22}, + 182: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 86, UncoreCacheID: 22}, + 183: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 87, UncoreCacheID: 22}, + 184: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 88, UncoreCacheID: 23}, + 185: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 89, UncoreCacheID: 23}, + 186: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 90, UncoreCacheID: 23}, + 187: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 91, UncoreCacheID: 23}, + 188: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 92, UncoreCacheID: 23}, + 189: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 93, UncoreCacheID: 23}, + 190: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 94, UncoreCacheID: 23}, + 191: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 95, UncoreCacheID: 23}, + }, + } + /* + Topology from dual Intel Xeon Platinum 8490H 60-Core Processor; lscpu excerpt + CPU(s): 240 + On-line CPU(s) list: 0-239 + Thread(s) per core: 2 + Core(s) per socket: 60 + Socket(s): 2 + NUMA node(s): 4 + NUMA node0 CPU(s): 0-29,120-149 + NUMA node1 CPU(s): 30-59,150-179 + NUMA node2 CPU(s): 60-89,180-209 + NUMA node3 CPU(s): 90-119,210-239 + */ + topoDualSocketSubNumaPerSocketHTMonolithicUncore = &topology.CPUTopology{ + NumCPUs: 240, + NumCores: 120, + NumUncoreCache: 2, + NumSockets: 2, + NumNUMANodes: 4, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 0}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 0}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 0}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 0}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 0}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 0}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 0}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 0}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 0}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 0}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 0}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 0}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 0}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 0}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 0}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 0}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 0}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 0}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 0}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 0}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 0}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 0}, + 30: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 30, UncoreCacheID: 0}, + 31: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 31, UncoreCacheID: 0}, + 32: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 32, UncoreCacheID: 0}, + 33: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 33, UncoreCacheID: 0}, + 34: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 34, UncoreCacheID: 0}, + 35: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 35, UncoreCacheID: 0}, + 36: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 36, UncoreCacheID: 0}, + 37: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 37, UncoreCacheID: 0}, + 38: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 38, UncoreCacheID: 0}, + 39: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 39, UncoreCacheID: 0}, + 40: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 40, UncoreCacheID: 0}, + 41: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 41, UncoreCacheID: 0}, + 42: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 42, UncoreCacheID: 0}, + 43: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 43, UncoreCacheID: 0}, + 44: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 44, UncoreCacheID: 0}, + 45: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 45, UncoreCacheID: 0}, + 46: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 46, UncoreCacheID: 0}, + 47: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 47, UncoreCacheID: 0}, + 48: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 48, UncoreCacheID: 0}, + 49: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 49, UncoreCacheID: 0}, + 50: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 50, UncoreCacheID: 0}, + 51: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 51, UncoreCacheID: 0}, + 52: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 52, UncoreCacheID: 0}, + 53: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 53, UncoreCacheID: 0}, + 54: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 54, UncoreCacheID: 0}, + 55: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 55, UncoreCacheID: 0}, + 56: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 56, UncoreCacheID: 0}, + 57: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 57, UncoreCacheID: 0}, + 58: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 58, UncoreCacheID: 0}, + 59: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 59, UncoreCacheID: 0}, + 60: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 60, UncoreCacheID: 1}, + 61: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 61, UncoreCacheID: 1}, + 62: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 62, UncoreCacheID: 1}, + 63: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 63, UncoreCacheID: 1}, + 64: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 64, UncoreCacheID: 1}, + 65: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 65, UncoreCacheID: 1}, + 66: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 66, UncoreCacheID: 1}, + 67: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 67, UncoreCacheID: 1}, + 68: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 68, UncoreCacheID: 1}, + 69: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 69, UncoreCacheID: 1}, + 70: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 70, UncoreCacheID: 1}, + 71: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 71, UncoreCacheID: 1}, + 72: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 72, UncoreCacheID: 1}, + 73: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 73, UncoreCacheID: 1}, + 74: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 74, UncoreCacheID: 1}, + 75: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 75, UncoreCacheID: 1}, + 76: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 76, UncoreCacheID: 1}, + 77: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 77, UncoreCacheID: 1}, + 78: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 78, UncoreCacheID: 1}, + 79: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 79, UncoreCacheID: 1}, + 80: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 80, UncoreCacheID: 1}, + 81: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 81, UncoreCacheID: 1}, + 82: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 82, UncoreCacheID: 1}, + 83: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 83, UncoreCacheID: 1}, + 84: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 84, UncoreCacheID: 1}, + 85: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 85, UncoreCacheID: 1}, + 86: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 86, UncoreCacheID: 1}, + 87: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 87, UncoreCacheID: 1}, + 88: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 88, UncoreCacheID: 1}, + 89: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 89, UncoreCacheID: 1}, + 90: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 90, UncoreCacheID: 1}, + 91: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 91, UncoreCacheID: 1}, + 92: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 92, UncoreCacheID: 1}, + 93: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 93, UncoreCacheID: 1}, + 94: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 94, UncoreCacheID: 1}, + 95: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 95, UncoreCacheID: 1}, + 96: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 96, UncoreCacheID: 1}, + 97: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 97, UncoreCacheID: 1}, + 98: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 98, UncoreCacheID: 1}, + 99: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 99, UncoreCacheID: 1}, + 100: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 100, UncoreCacheID: 1}, + 101: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 101, UncoreCacheID: 1}, + 102: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 102, UncoreCacheID: 1}, + 103: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 103, UncoreCacheID: 1}, + 104: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 104, UncoreCacheID: 1}, + 105: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 105, UncoreCacheID: 1}, + 106: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 106, UncoreCacheID: 1}, + 107: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 107, UncoreCacheID: 1}, + 108: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 108, UncoreCacheID: 1}, + 109: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 109, UncoreCacheID: 1}, + 110: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 110, UncoreCacheID: 1}, + 111: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 111, UncoreCacheID: 1}, + 112: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 112, UncoreCacheID: 1}, + 113: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 113, UncoreCacheID: 1}, + 114: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 114, UncoreCacheID: 1}, + 115: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 115, UncoreCacheID: 1}, + 116: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 116, UncoreCacheID: 1}, + 117: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 117, UncoreCacheID: 1}, + 118: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 118, UncoreCacheID: 1}, + 119: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 119, UncoreCacheID: 1}, + 120: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 0, UncoreCacheID: 0}, + 121: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 1, UncoreCacheID: 0}, + 122: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 123: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 124: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 125: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 126: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 127: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 128: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 0}, + 129: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 0}, + 130: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 0}, + 131: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 0}, + 132: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 0}, + 133: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 0}, + 134: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 0}, + 135: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 0}, + 136: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 0}, + 137: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 0}, + 138: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 0}, + 139: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 0}, + 140: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 0}, + 141: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 0}, + 142: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 0}, + 143: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 0}, + 144: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 0}, + 145: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 0}, + 146: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 0}, + 147: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 0}, + 148: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 0}, + 149: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 0}, + 150: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 30, UncoreCacheID: 0}, + 151: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 31, UncoreCacheID: 0}, + 152: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 32, UncoreCacheID: 0}, + 153: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 33, UncoreCacheID: 0}, + 154: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 34, UncoreCacheID: 0}, + 155: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 35, UncoreCacheID: 0}, + 156: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 36, UncoreCacheID: 0}, + 157: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 37, UncoreCacheID: 0}, + 158: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 38, UncoreCacheID: 0}, + 159: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 39, UncoreCacheID: 0}, + 160: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 40, UncoreCacheID: 0}, + 161: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 41, UncoreCacheID: 0}, + 162: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 42, UncoreCacheID: 0}, + 163: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 43, UncoreCacheID: 0}, + 164: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 44, UncoreCacheID: 0}, + 165: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 45, UncoreCacheID: 0}, + 166: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 46, UncoreCacheID: 0}, + 167: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 47, UncoreCacheID: 0}, + 168: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 48, UncoreCacheID: 0}, + 169: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 49, UncoreCacheID: 0}, + 170: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 50, UncoreCacheID: 0}, + 171: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 51, UncoreCacheID: 0}, + 172: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 52, UncoreCacheID: 0}, + 173: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 53, UncoreCacheID: 0}, + 174: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 54, UncoreCacheID: 0}, + 175: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 55, UncoreCacheID: 0}, + 176: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 56, UncoreCacheID: 0}, + 177: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 57, UncoreCacheID: 0}, + 178: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 58, UncoreCacheID: 0}, + 179: topology.CPUInfo{NUMANodeID: 1, SocketID: 0, CoreID: 59, UncoreCacheID: 0}, + 180: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 60, UncoreCacheID: 1}, + 181: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 61, UncoreCacheID: 1}, + 182: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 62, UncoreCacheID: 1}, + 183: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 63, UncoreCacheID: 1}, + 184: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 64, UncoreCacheID: 1}, + 185: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 65, UncoreCacheID: 1}, + 186: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 66, UncoreCacheID: 1}, + 187: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 67, UncoreCacheID: 1}, + 188: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 68, UncoreCacheID: 1}, + 189: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 69, UncoreCacheID: 1}, + 190: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 70, UncoreCacheID: 1}, + 191: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 71, UncoreCacheID: 1}, + 192: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 72, UncoreCacheID: 1}, + 193: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 73, UncoreCacheID: 1}, + 194: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 74, UncoreCacheID: 1}, + 195: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 75, UncoreCacheID: 1}, + 196: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 76, UncoreCacheID: 1}, + 197: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 77, UncoreCacheID: 1}, + 198: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 78, UncoreCacheID: 1}, + 199: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 79, UncoreCacheID: 1}, + 200: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 80, UncoreCacheID: 1}, + 201: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 81, UncoreCacheID: 1}, + 202: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 82, UncoreCacheID: 1}, + 203: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 83, UncoreCacheID: 1}, + 204: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 84, UncoreCacheID: 1}, + 205: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 85, UncoreCacheID: 1}, + 206: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 86, UncoreCacheID: 1}, + 207: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 87, UncoreCacheID: 1}, + 208: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 88, UncoreCacheID: 1}, + 209: topology.CPUInfo{NUMANodeID: 2, SocketID: 1, CoreID: 89, UncoreCacheID: 1}, + 210: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 90, UncoreCacheID: 1}, + 211: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 91, UncoreCacheID: 1}, + 212: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 92, UncoreCacheID: 1}, + 213: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 93, UncoreCacheID: 1}, + 214: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 94, UncoreCacheID: 1}, + 215: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 95, UncoreCacheID: 1}, + 216: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 96, UncoreCacheID: 1}, + 217: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 97, UncoreCacheID: 1}, + 218: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 98, UncoreCacheID: 1}, + 219: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 99, UncoreCacheID: 1}, + 220: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 100, UncoreCacheID: 1}, + 221: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 101, UncoreCacheID: 1}, + 222: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 102, UncoreCacheID: 1}, + 223: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 103, UncoreCacheID: 1}, + 224: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 104, UncoreCacheID: 1}, + 225: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 105, UncoreCacheID: 1}, + 226: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 106, UncoreCacheID: 1}, + 227: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 107, UncoreCacheID: 1}, + 228: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 108, UncoreCacheID: 1}, + 229: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 109, UncoreCacheID: 1}, + 230: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 110, UncoreCacheID: 1}, + 231: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 111, UncoreCacheID: 1}, + 232: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 112, UncoreCacheID: 1}, + 233: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 113, UncoreCacheID: 1}, + 234: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 114, UncoreCacheID: 1}, + 235: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 115, UncoreCacheID: 1}, + 236: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 116, UncoreCacheID: 1}, + 237: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 117, UncoreCacheID: 1}, + 238: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 118, UncoreCacheID: 1}, + 239: topology.CPUInfo{NUMANodeID: 3, SocketID: 1, CoreID: 119, UncoreCacheID: 1}, + }, + } + /* + Topology from dual Intel Core i7-12850HX 10-Core Processor; lscpu excerpt + CPU(s): 24 + On-line CPU(s) list: 0-23 + Thread(s) per core: 2 + Core(s) per socket: 16 + Socket(s): 1 + NUMA node(s): 1 + */ + topoSingleSocketSingleNumaPerSocketPCoreHTMonolithicUncore = &topology.CPUTopology{ + NumCPUs: 24, + NumCores: 16, // 8 E-Cores and 8 P-Cores + NumUncoreCache: 1, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 0}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 0}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 0}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 0}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 0}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 0}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 0}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 0}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 0}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 0}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 0}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 0}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 0}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 0}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 0}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 0}, + }, + } + /* + Topology from 1P ARM Ampere Altra 128C; lscpu excerpt + CPU(s): 128 + On-line CPU(s) list: 0-127 + Thread(s) per core: 1 + Core(s) per socket: 128 + Socket(s): 1 + NUMA node(s): 1 + */ + topoLargeSingleSocketSingleNumaPerSocketUncore = &topology.CPUTopology{ + NumCPUs: 128, + NumCores: 128, + NumUncoreCache: 16, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 1}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 1}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 1}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 1}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 1}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 1}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 1}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 1}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 2}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 2}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 2}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 2}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 2}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 2}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 2}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 2}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 3}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 3}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 3}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 3}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 3}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 3}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 3}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 3}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 4}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 4}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 4}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 4}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 4}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 4}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 4}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 4}, + 40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 5}, + 41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 5}, + 42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 5}, + 43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 5}, + 44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 5}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 5}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 5}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 5}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 6}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 6}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 6}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 6}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 6}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 6}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 6}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 6}, + 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}, + 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: 8}, + 65: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 65, UncoreCacheID: 8}, + 66: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 66, UncoreCacheID: 8}, + 67: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 67, UncoreCacheID: 8}, + 68: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 68, UncoreCacheID: 8}, + 69: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 69, UncoreCacheID: 8}, + 70: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 70, UncoreCacheID: 8}, + 71: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 71, UncoreCacheID: 8}, + 72: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 72, UncoreCacheID: 9}, + 73: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 73, UncoreCacheID: 9}, + 74: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 74, UncoreCacheID: 9}, + 75: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 75, UncoreCacheID: 9}, + 76: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 76, UncoreCacheID: 9}, + 77: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 77, UncoreCacheID: 9}, + 78: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 78, UncoreCacheID: 9}, + 79: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 79, UncoreCacheID: 9}, + 80: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 80, UncoreCacheID: 10}, + 81: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 81, UncoreCacheID: 10}, + 82: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 82, UncoreCacheID: 10}, + 83: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 83, UncoreCacheID: 10}, + 84: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 84, UncoreCacheID: 10}, + 85: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 85, UncoreCacheID: 10}, + 86: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 86, UncoreCacheID: 10}, + 87: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 87, UncoreCacheID: 10}, + 88: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 88, UncoreCacheID: 11}, + 89: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 89, UncoreCacheID: 11}, + 90: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 90, UncoreCacheID: 11}, + 91: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 91, UncoreCacheID: 11}, + 92: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 92, UncoreCacheID: 11}, + 93: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 93, UncoreCacheID: 11}, + 94: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 94, UncoreCacheID: 11}, + 95: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 95, UncoreCacheID: 11}, + 96: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 96, UncoreCacheID: 12}, + 97: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 97, UncoreCacheID: 12}, + 98: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 98, UncoreCacheID: 12}, + 99: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 99, UncoreCacheID: 12}, + 100: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 100, UncoreCacheID: 12}, + 101: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 101, UncoreCacheID: 12}, + 102: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 102, UncoreCacheID: 12}, + 103: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 103, UncoreCacheID: 12}, + 104: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 104, UncoreCacheID: 13}, + 105: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 105, UncoreCacheID: 13}, + 106: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 106, UncoreCacheID: 13}, + 107: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 107, UncoreCacheID: 13}, + 108: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 108, UncoreCacheID: 13}, + 109: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 109, UncoreCacheID: 13}, + 110: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 110, UncoreCacheID: 13}, + 111: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 111, UncoreCacheID: 13}, + 112: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 112, UncoreCacheID: 14}, + 113: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 113, UncoreCacheID: 14}, + 114: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 114, UncoreCacheID: 14}, + 115: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 115, UncoreCacheID: 14}, + 116: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 116, UncoreCacheID: 14}, + 117: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 117, UncoreCacheID: 14}, + 118: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 118, UncoreCacheID: 14}, + 119: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 119, UncoreCacheID: 14}, + 120: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 120, UncoreCacheID: 15}, + 121: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 121, UncoreCacheID: 15}, + 122: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 122, UncoreCacheID: 15}, + 123: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 123, UncoreCacheID: 15}, + 124: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 124, UncoreCacheID: 15}, + 125: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 125, UncoreCacheID: 15}, + 126: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 126, UncoreCacheID: 15}, + 127: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 127, UncoreCacheID: 15}, + }, + } + /* + Topology from 1P AWS Graviton3 64C; lscpu excerpt + CPU(s): 64 + On-line CPU(s) list: 0-63 + Thread(s) per core: 1 + Core(s) per socket: 64 + Socket(s): 1 + NUMA node(s): 1 + */ + topoSingleSocketSingleNumaPerSocketUncore = &topology.CPUTopology{ + NumCPUs: 64, + NumCores: 64, + NumUncoreCache: 1, + NumSockets: 1, + NumNUMANodes: 1, + 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}, + 2: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 2, UncoreCacheID: 0}, + 3: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 3, UncoreCacheID: 0}, + 4: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 4, UncoreCacheID: 0}, + 5: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 5, UncoreCacheID: 0}, + 6: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 6, UncoreCacheID: 0}, + 7: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 7, UncoreCacheID: 0}, + 8: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 8, UncoreCacheID: 0}, + 9: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 9, UncoreCacheID: 0}, + 10: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 10, UncoreCacheID: 0}, + 11: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 11, UncoreCacheID: 0}, + 12: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 12, UncoreCacheID: 0}, + 13: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 13, UncoreCacheID: 0}, + 14: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 14, UncoreCacheID: 0}, + 15: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 15, UncoreCacheID: 0}, + 16: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 16, UncoreCacheID: 0}, + 17: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 17, UncoreCacheID: 0}, + 18: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 18, UncoreCacheID: 0}, + 19: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 19, UncoreCacheID: 0}, + 20: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 20, UncoreCacheID: 0}, + 21: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 21, UncoreCacheID: 0}, + 22: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 22, UncoreCacheID: 0}, + 23: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 23, UncoreCacheID: 0}, + 24: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 24, UncoreCacheID: 0}, + 25: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 25, UncoreCacheID: 0}, + 26: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 26, UncoreCacheID: 0}, + 27: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 27, UncoreCacheID: 0}, + 28: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 28, UncoreCacheID: 0}, + 29: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 29, UncoreCacheID: 0}, + 30: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 30, UncoreCacheID: 0}, + 31: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 31, UncoreCacheID: 0}, + 32: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 32, UncoreCacheID: 0}, + 33: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 33, UncoreCacheID: 0}, + 34: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 34, UncoreCacheID: 0}, + 35: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 35, UncoreCacheID: 0}, + 36: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 36, UncoreCacheID: 0}, + 37: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 37, UncoreCacheID: 0}, + 38: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 38, UncoreCacheID: 0}, + 39: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 39, UncoreCacheID: 0}, + 40: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 40, UncoreCacheID: 0}, + 41: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 41, UncoreCacheID: 0}, + 42: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 42, UncoreCacheID: 0}, + 43: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 43, UncoreCacheID: 0}, + 44: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 44, UncoreCacheID: 0}, + 45: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 45, UncoreCacheID: 0}, + 46: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 46, UncoreCacheID: 0}, + 47: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 47, UncoreCacheID: 0}, + 48: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 48, UncoreCacheID: 0}, + 49: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 49, UncoreCacheID: 0}, + 50: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 50, UncoreCacheID: 0}, + 51: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 51, UncoreCacheID: 0}, + 52: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 52, UncoreCacheID: 0}, + 53: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 53, UncoreCacheID: 0}, + 54: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 54, UncoreCacheID: 0}, + 55: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 55, UncoreCacheID: 0}, + 56: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 56, UncoreCacheID: 0}, + 57: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 57, UncoreCacheID: 0}, + 58: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 58, UncoreCacheID: 0}, + 59: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 59, UncoreCacheID: 0}, + 60: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 60, UncoreCacheID: 0}, + 61: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 61, UncoreCacheID: 0}, + 62: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 62, UncoreCacheID: 0}, + 63: topology.CPUInfo{NUMANodeID: 0, SocketID: 0, CoreID: 63, UncoreCacheID: 0}, + }, + } )