AIX® memory affinity support

IBM® POWER® processor-based platform SMP hardware systems contain modules that are capable of supporting single, dual, or multiple processor chips depending on the particular system. Each of these modules contain multiple processors and the system memory is attached to these modules. While any processor can access all of the memory in the system, a processor has faster access, and higher bandwidth when addressing memory that is attached to its own module rather than memory attached to the other modules in the system.

When memory affinity is enabled, each module has its own vmpool, which contains one or more memory pools. Each memory pool has its own page replacement daemon, lrud. The amount of memory in each pool is based on how much memory is available in the module or allocated to the VMM by the hypervisor layer.

AIX® provides memory affinity by allocating memory for a process from the module containing the processor that caused the page fault. Each module has its own vmpool, which contains one or more memory pools. Each memory pool has its own page replacement daemon, lrud. The amount of memory in each pool is based on how much memory is available in the module or allocated to the VMM by the hypervisor layer. Placement of user memory can be configured using the MEMORY_AFFINITY environment variable.

The operating system provides memory affinity by organizing its data structures along module boundaries. The default memory allocation policy rotates among the MCMs. In order to obtain preferential local MCM memory allocation, an application must export the MEMORY_AFFINITY environment variable as follows:
MEMORY_AFFINITY=MCM
This behavior is propagated across a fork. However, for this behavior to be retained across a call to the exec function, the variable must be contained in the environment string passed to the exec function call.

Related information

The vmo command and VMM page replacement tuning.

The bindprocessor command or subroutine.

WLM Class and Resource Set Attributes.