Memory pool activity level

The activity level of a memory pool is the number of threads that can actively use the CPU at the same time in a memory pool. This allows for efficient use of system resources. The system manages the control of the activity level.

Often during processing in a thread, a program waits for a system resource or a response from a workstation user. During such waits, a thread gives up its use of the memory pool activity level so that another thread that is ready to be processed can take its place.

When more threads are started than can run at the same time the excess threads must wait to use the processing unit (normally this wait is short). The memory pool activity level lets you limit the amount of main memory contention in the various memory pools in your subsystems.

The number of threads running (or active threads) refers to the number of threads that are eligible to compete for the processor and that count against the activity level for a memory pool. In this sense, active threads do not include threads that are waiting for input, for a message, for a device to be allocated, or for a file to be opened. Active threads do not include threads that are ineligible (threads that are ready to run but the memory pool activity level is at its maximum).

How activity levels work

More than one thread can be active at the same time in a memory pool because the processing for a thread can be briefly interrupted while needed data is retrieved from auxiliary storage. During this delay, which is typically short, another thread can run. Using the activity level, the machine can process a large number of threads in a memory pool and at the same time hold the level of contention to the limit that you specify.

Maximum activity level
After the maximum activity level for a memory pool has been reached, additional threads needing the memory pool are placed in the ineligible state to wait for the number of active threads in the memory pool to fall below the maximum activity level or for a thread to reach the end of its time slice. As soon as a thread gives up its use of the memory pool, the other threads that are not active become eligible to run by their priority. For example, if a running thread is waiting for a response from a workstation, it gives up its activity level and the activity level is no longer at its maximum.

Defining memory pool activity levels
Defining memory pools and activity levels correctly is generally dependent on size of the memory pool, the number of CPUs, the number of disk unit arms, and the characteristics of the application.
Data memory pools
A shared memory pool defined with an activity level of zero is a data memory pool. No threads can run in the pool, it can only be used for data.