Consultor Eletrônico



Kbase P13881: Why the -Mxs startup parameter might be required.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/12/2008
Status: Unverified

GOAL:

Why the -Mxs startup parameter might be required.

GOAL:

When to use the -Mxs startup parameter

FIX:

When the database manager starts up, it creates the shared memory area during initialization. To create the shared memory, it has to know how much space to allocate. The size is computed by analyzing the values of various startup parameters and the sizes and number of the various data structures that will be put in shared memory.

The -Mxs parameter tells the database manager to allocate more than what it has calculated will be needed. This "feature" is provided in case the calculated value turns out to be too small for some reason. There are three reasons why it might be wrong:

1. For various reasons, the computation is not exact. For example, we do not know what the largest shared memory segment size we can allocate is and therefore how many segments will be required. There is some overhead in the beginning of each segment to keep track of the space. The more segments, the more overhead.

2. There are variable size structures (index key values in index cursors) kept in shared memory. The size varies according to what the application does, how indexes are defined, and what the key values are. We estimate how much memory will be needed for these. If the estimate turns out to be wrong, you need a way to override it.

3. Bugs. Progress may have added a data structure and forgotten to include it in the computation or done the computation incorrectly.


It is pretty unusual for anyone to have to use -Mxs these days, but it is kept in case it is needed. Various messages can indicate this -

Out of free shared memory. Use -Mxs to increase. (1185)
(14394) Out of free shared memory.
(6495) Out of free shared memory. Use -Mxs to increase.