Hello,
I have a server with following specs:
- OS: Windows Server 2022 (Build 20348.2402)
- CPU: AMD EPYC 9554P (64 physical cores, 128 logical cores)
With NUMA nodes per socket set to 4 (NPS4) in the BIOS, Windows is configuring processor groups in an odd way. In task manager "Processor affinity" (right-click on a process and select "Set affinity") two groups are shown with the following nodes:
Group 0:
CPU 0 to CPU 15 (Node 0), CPU 0 to CPU 15 (Node 2), CPU 0 to CPU 15 (Node 0), CPU 0 to CPU 15 (Node 2)
Group 1:
CPU 0 to CPU 15 (Node 1), CPU 0 to CPU 15 (Node 3), CPU 0 to CPU 15 (Node 1), CPU 0 to CPU 15 (Node 3)
The fact that the first 15 CPUs of each node are repeated seems an "esthetic" error. Actually the "repeated" CPUs are CPU 16 to CPU 31 of each node.
But the important thing is that nodes are interleaved. So if I set the affinity of a process to the first 32 threads of a group, it would be running on two different NUMA nodes which does not seem ideal. I have the same behaviour using SetProcessAffinityMask function.
The response of GetLogicalProcessorInformationEx function to retrieve RelationNumaNode is as following:
NodeNumber 0 Group 0 Mask 0000ffff0000ffff
NodeNumber 1 Group 1 Mask ffff0000ffff0000
NodeNumber 2 Group 0 Mask ffff0000ffff0000
NodeNumber 3 Group 1 Mask 0000ffff0000ffff
So according to the OS, processors assigned to each NUMA node are not contiguous.
I tested with other server with a CPU AMD EPYC 7713P (64 physical cores, 128 logical cores) and NUMA nodes per socket set to 4 (NPS4), Windows Processor Group configuration is as following:
Group 0:
CPU 0 to CPU 31 (Node 0), CPU 0 to CPU 31 (Node 2)
Group 1:
CPU 0 to CPU 31 (Node 1), CPU 0 to CPU 31 (Node 3)
In this case, processor group configuration seems optimal.
Could this be a compatibility issue of Windows with AMD EPYC 9004? Is there any CPU architecture change in EPYC 9004 processors that can explain this behaviour?
Best Regards,
Antonio