NUMA Support on Systems With More Than 64 Logical Processors
On systems with more than 64 logical processors, nodes are assigned to processor
groups according to the capacity of the nodes. The capacity of a node is the number of processors
that are present when the system starts together with any additional logical processors that can be
added while the system is running.
Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP: Processor
groups are not supported.
Each node must be fully contained within a group. If the capacities of the nodes are relatively small,
the system assigns more than one node to the same group, choosing nodes that are physically close
to one another for better performance. If a node's capacity exceeds the maximum number of
processors in a group, the system splits the node into multiple smaller nodes, each small enough to
fit in a group.
An ideal NUMA node for a new process can be requested using
the PROC_THREAD_ATTRIBUTE_PREFERRED_NODEextended attribute when the process is
created. Like a thread ideal processor, the ideal node is a hint to the scheduler, which assigns the
new process to the group that contains the requested node if possible.
The extended NUMA
functions GetNumaAvailableMemoryNodeEx, GetNumaNodeProcessorMaskEx,GetNumaProce
ssorNodeEx, and GetNumaProximityNodeEx differ from their unextended counterparts in that the
node number is a USHORT value rather than a UCHAR, to accommodate the potentially greater
number of nodes on a system with more than 64 logical processors. Also, the processor specified
with or retrieved by the extended functions includes the processor group; the processor specified
with or retrieved by the unextended functions is group-relative. For details, see the individual
function reference topics.
A group-aware application can assign all of its threads to a particular node in a similar fashion to that
described earlier in this topic, using the corresponding extended NUMA functions. The application
uses GetLogicalProcessorInformationExto get the list of all processors on the system. Note that
the application cannot set the process affinity mask unless the process is assigned to a single group
and the intended node is located in that group. Usually the application must
callSetThreadGroupAffinity to limit its threads to the intended