Private Memory Threshold (priv_mem_thresh)

Configuration Type
Database manager

Applies to

Parameter Type
Configurable

Default [Range]
1296 [ -1; 32 - 112 000 ]

32 [ -1; 32 - 112 000 ] on Satellite database server with local clients

Unit of Measurement
Pages (4 KB)

Related Parameters
Minimum Committed Private Memory (min_priv_mem)

This parameter is used to determine the amount of unused agent private memory that will be kept allocated, ready to be used by new agents that are started. It does not apply to UNIX-based platforms.

When an agent is terminated, instead of automatically deallocating all of the memory that was used by that agent, the database manager will only deallocate excess memory allocations, which is determined by the following formula:

  Private memory allocated -
  (private memory used + priv_mem_thresh)

If this formula produces a negative result, no action will be taken.

The following table provides an example to illustrate when memory will be allocated and deallocated. This example uses 100 as an arbitrary setting for priv_mem_thresh.
  Description of Action Memory Allocated Memory Used
A number of agents are running and have allocated memory. 1000 1000
A new agent is started and uses 100 pages of memory. 1100 1100
A agent using 200 pages of memory terminates. (Notice that 100 pages of memory is freed, while 100 pages is kept allocated for future possible use.) 1000 900
A agent using 50 pages of memory terminates. (Notice that 50 pages of memory is freed and 100 extra pages are still allocated, compared to what is being used by the existing agents.) 950 850
A new agent is started and requires 150 pages of memory. (100 of the 150 pages are already allocated and the database manager only needs to allocate 50 additional pages for this agent.) 1000 1000

A value of "-1", will cause this parameter to use the value of the min_priv_mem parameter.

Recommendation: When setting this parameter, you should consider the client connection/disconnection patterns as well as the memory requirements of other processes on the same machine.

If there is only a brief period during which many clients are concurrently connected to the database, a high threshold will prevent unused memory from being decommitted and made available to other processes. This case results in poor memory management which can affect other processes which require memory.

If the number of concurrent clients is more uniform and there are frequent fluctuations in this number, a high threshold will help to ensure memory is available for the client processes and reduce the overhead to allocate and deallocate memory.