Detailed information for the notes.ini Keyword: 


Short Description: Effects the memory allocation behavior of the Domino server.

On the UNIX or S390 environments, the shell environment variable Notes_SHARED_DPOOLSIZE effects the memory allocation behavior of the Domino server. How can this variable be tuned to maximize the efficiency of memory usage of the Domino server?
The Notes_SHARED_DPOOLSIZE variable configures the size of the operating system memory blocks Domino allocates for use as DPOOL memory. The DPOOL memory is predominantly allocated for use as database buffers (to avoid reading from disk). Under UNIX or S390 platforms, this memory is allocated at an operating system from shared memory.

The Domino server allocates one shared memory segment as a memory manager/map for subsequent memory segments. The size of these subsequent segments are controlled using the Notes_SHARED_DPOOLSIZE parameter.

[ memory manager block ]
[ Domino release specific size ]

[ DPOOL memory ]
[ Notes_SHARED_DPOOLSIZE bytes ]


[ DPOOL memory ]
[ Notes_SHARED_DPOOLSIZE bytes ]

The Domino server will allocate these Notes_SHARED_DPOOLSIZE sized blocks of memory as required to meet memory allocation needs. It never releases the memory, nor will it allocate a smaller sized block. If the Domino server is unable to allocate such a memory segment (and therefore unable to allocate DPOOL memory) it may fail. Each operating system has different limits on the number of shared memory segments which may be allocated.

For AIX 4.2.1 and above, a maximum of 11 shared memory blocks can be allocated per process. For HPUX the maximum number used efficiently is 3. For Solaris there is no effective limit for the number of shared memory segments. For AIX, therefore, as one segment is used for the memory manager, the maximum amount of DPOOL memory available will be 10* Notes_SHARED_DPOOLSIZE, under HPUX 2 * Notes_SHARED_DPOOLSIZE.

Note that the Operating System may require tuning to allow sufficiently large memory segments to be allocated. Check the Operating System documentation for information on this.

As the memory is allocated in fixed size chunks, a certain amount of memory will be available for use by the Server but not used:

[ memory ] [ DPOOL block ] [ DPOOL block ] [ DPOOL block ] ... [ DPOOL block ]
[ manager ] [xxxxxxxxxxxxx] [xxxxxxxxxxxxx] [xxxxxxxxxxxxx] ... [xffffffffffff]

x == used
f == free

If Notes_SHARED_DPOOLSIZE is chosen without any estimation of the amount of memory being used by the server on average, the amount of memory allocated but not used will be half the size of Notes_SHARED_DPOOLSIZE. A more careful measurement of the server's "usual" memory allocation may allow a more efficient configuration. Note that for partitioned servers, and clients using Notes_ISOLATION=1, each server/client has its own set of DPOOL shared memory segments. The wasted space is therefore proportional to the number of partitioned servers/clients.

For example, consider three partitioned servers:

Server 1
[ memory ] [ DPOOL block ] ... [ DPOOL block ]
[ manager ] [xxxxxxxxxxxxx] ... [xffffffffffff]

Server 2
[ memory ] [ DPOOL block ] [ DPOOL block ] [ DPOOL block ] ... [ DPOOL block ]
[ manager ] [xxxxxxxxxxxxx] [xxxxxxxxxxxxx] [xxxxxxxxxxxxx] ... [xffffffffffff]

Server 3
[ memory ] [ DPOOL block ] [ DPOOL block ] ... [ DPOOL block ]
[ manager ] [xxxxxxxxxxxxx] [xxxxxxxxxxxxx] ... [xffffffffffff]

x == used
f == free

Each server may, however, utilize a different Notes_SHARED_DPOOLSIZE, which allows the servers to be sized according to workload.

The shared memory segments allocated will contend for space in physical memory with processes and Operating System memory usage (buffer cache, etc.) If the system's physical memory is exhausted by the requirements of Domino DPOOL, processes and OS requirements, the system will page; or, in the worst case, swap. This will impact the performance of the system.

The size of the Notes_SHARED_DPOOLSIZE variable must therefore be tuned to meet the following requirements:

i) Under peak load, the Domino server must be able to allocate sufficient DPOOL memory for its needs. This implies that the server must be able to allocate sufficient shared memory for its needs. The amount of shared memory which can be allocated depends on both the size of the memory segments allocated, and the number of segments which may be allocated.

ii) Under peak load, the number of DPOOL segments required due to the Notes_SHARED_DPOOLSIZE must be less than or equal to the maximum supported by the Operating System.

As the peak load may be difficult to predict, an alternative strategy is to allow headroom under normal load. A good rule of thumb for AIX systems is 6 - 7 DPOOL shared memory segments in use under normal load; for HPUX systems, 1-2 DPOOL shared memory segments under normal load.

iii) The Operating System must be tuned to allow segments of the size required.

iv) The size of the DPOOL shared memory segments should be chosen, if possible, to minimize memory allocated, but unused under normal steady state conditions. This is to prevent paging/swapping being caused unnecessarily.

The decision for the size, therefore, is a trade-off between the number of shared memory segments allocated, the wasted space in the memory blocks and the contention for physical memory resources by processes, the OS and the DPOOL memory objects.

The amount of memory allocated by the server can be roughly estimated by multiplying the size of the DPOOL segments by the number. This will allow the number of segments allocated to be tuned by changing the Notes_SHARED_DPOOLSIZE environment variable.


UI equivalent:
There is no kown UI setting for this notes.ini variable. But you can specify this setting in the notes.ini settings tab of the configuration settings document.

Applies to:

Valid for version: