Try OpenEdge Now
skip to main content
Database Administration
Maintaining and Monitoring Your Database : Managing Performance : Memory usage : Shared memory allocation
Shared memory allocation
Shared memory segment allocation methodologies are dynamic; the optimum size of shared memory segments is dynamically calculated at runtime. The broker attempts to allocate the largest possible segment size and the fewest number of segments to meet the shared memory requirements.The result is that larger amounts of shared memory can be allocated more efficiently. An added benefit is that you can make more self-service database connections with large shared memory.
The maximum size of shared memory segments can be specified at startup. Increasing the size of shared memory segments decreases the number of segments allocated. In Windows, memory mapped files are used instead of segments. Shared memory size is specified with the -shmsegsizen server parameter. See Shared memory segment size (-shmsegsize) for a description of the parameter and its arguments.
The amount of shared memory allocated for the database is constrained by your system as follows:
*The database server cannot create a shared memory segment larger than the operating system maximum shared memory segment size. If the value specified for -shmsegsize is larger than the operating system maximum, the operating system maximum will be used. Not all platforms specify a maximum shared memory segment size; for example, Windows and AIX do not. For many of the other supported UNIX platforms, the maximum shared memory segment size is determined by the kernel parameter SHMMAX.
*The database server cannot create more shared memory segments than the maximum allowed by the operating system. This value is not tunable on all systems, but for many of the supported UNIX platforms, the kernel parameter for this maximum is SHMSEG.
*The database server cannot create shared memory segments that exceed the maximum addressable memory of a system. For 32-bit platforms, the theoretical maximum is 4 GB, but in practice, the maximum is smaller, as other aspects of the process (heap, stack, code, etc.) consume part of the available memory. For 64-bit platforms, physical system limitations keep the practical maximum well below any theoretical computational maximum. If the amount of shared memory requested exceeds the capacity of the system, the server will not start.
See your operating system documentation for specific information on shared memory segment settings.