OpenVMS Application
Support for Resource Affinity Domains (RADs)
The large amount of physical memory in the new AlphaServer
GS series systems provides opportunities for extremely large databases
to be completely in memory. The AlphaServer nonuniform
memory access (NUMA) system architecture provides the
bandwidth to efficiently access this large amount of memory. NUMA
is an attribute of a system in which the access time to any given
physical memory is not the same for all CPUs.
In OpenVMS Alpha Version 7.2-1H1, OpenVMS engineering
added NUMA awareness to OpenVMS memory management and process scheduling.
This capability (application support for RADs) ensures that applications
running in a single instance of OpenVMS on multiple building blocks
can execute as efficiently as possible in a NUMA environment.
The operating system treats the hardware as a set of resource
affinity domains (RADs). A RAD is a set of hardware components (CPUs,
memory, and I/O) with common access characteristics. On AlphaServer GS80/160/320
systems, a RAD corresponds to a quad building block (QBB). On AlphaServer ES47/ES80/GS1280
systems, a RAD corresponds to a two-processor CPU board. A CPU references
memory in the same RAD roughly up to three times faster than it
references memory in another RAD. Therefore, it is important to
keep the code being executed and the memory being referenced in
the same RAD as much as possible while not giving some processes
a consistently unfair advantage. Good location is the key to good performance,
but it must be as fair as possible when fairness is important.
The OpenVMS scheduler and the memory management subsystem
work together to achieve the best possible location by:
Assigning each process a preferred
or "home" RAD.
Assigning process-private pages from the home RAD's
memory.
Usually scheduling a process on a CPU in its home
RAD.
Replicating operating system read-only code on each
RAD.