(Click to open topic with navigation)
This chapter introduces NUMA-aware scheduling and identifies Moab-, Torque-, and MAM-related functions.
NUMA-aware scheduling is available with Moab Workload Manager 9.0 and later and requires Torque Resource Manager 6.0 and later.
In this chapter:
The following image provides an example of the NUMA process.
![]() |
Click to enlarge |
N.103.2 Installation and Configuration
Moab does not require any special installation or configuration processes to support NUMA-aware with Torque.
N.103.3 Moab and NUMA Resources
Moab uses generic resources to natively understand the concept of "socket", "numanode", "core" and "thread". The msub/qsub "-L" syntax for job submissions lets you request placement or allocation of these specific resources.
See -L NUMA Resource Request for more information on using the -L syntax.
For the -L syntax, submit using qsub unless your system requires submissions using msub.
Moab does not require a configuration change to support NUMA-aware scheduling (no new Moab configuration parameters). However, you may need to increase MAXGRES to accommodate the additional resources. See MAXGRES.
When using NUMA-aware, the following occurs:
Moab assumes that the NUMA resources on a particular node are balanced. This means that each socket has the same amount of resources, including numanodes, cores, threads, memory, and gpus.
Moab supports advanced multi-req resource requests within the same job using the msub/qsub "-L" syntax.
In addition, any job that requests NUMA resources will receive a per-task default memory requirement if a memory requirement is not specified by the user. .
Adaptive Computing provides these recommendations for jobs:
GPU jobs that request cores and processors should not share nodes with non-GPU jobs. For example, a job requesting a numanode may be given a numanode with a gpu and thus block other jobs from consuming that GPU. This can be prevented with proper queue policies and placement.
N.103.4 Track Dedicated NUMA Resources
If Moab Accounting Manager is part of your configuration, you can configure MAM to track dedicated NUMA resources ( sockets, numanodes, cores, threads).
As the MAM Admin, run the commands for the individual resources you wish to track. The follow example shows the commands for all of the available resources.
[mam]$ mam-shell Attribute Create Object=UsageRecord Name=Sockets DataType=Integer Description="\"Number of Sockets Dedicated\""
[mam]$ mam-shell Attribute Create Object=UsageRecord Name=NumaNodes DataType=Integer Description="\"Number of Numa Nodes Dedicated\""
[mam]$ mam-shell Attribute Create Object=UsageRecord Name=Cores DataType=Integer Description="\"Number of Cores Dedicated\""
[mam]$ mam-shell Attribute Create Object=UsageRecord Name=Threads DataType=Integer Description="\"Number of Threads Dedicated\""
NUMA resources are only reported to MAM when they are dedicated to the job. As you can specify the placement rules (the NUMA resources that are dedicated), it is not recommended to charge for any NUMA resources; use Processors instead.