Progress
Installation and Configuration Guide
Version 9
for UNIX


Shared Memory and Kernel Configuration

This section applies to shared-memory UNIX systems. Most UNIX systems support shared memory and semaphores; however, if your system does not support them, disregard this section.

In Progress, the multi-threaded architecture makes heavy use of file descriptors, shared memory, and semaphores. Allocation of these resources is controlled by system configuration parameters. On most systems, these parameters are set to values appropriate for Progress applications. However, in some cases, one or more parameters might not be set optimally, thereby limiting the number of Progress users. If you have to reset the parameters, you must edit the parameter file and reconfigure your kernel. The kernel reconfiguration procedure is commonly documented in the system administration manual provided by your hardware vendor.

The optimal parameter settings depend on the system, the application, the number of users, and some minor factors. Table 6–6 lists the crucial parameters and provides guidelines for choosing adequate values for each one.

Table 6–6: Shared Memory and Semaphore Parameter Settings
Parameter
Meaning
Optimal Setting
SHMMNI
Maximum number of shared memory (SHM) identifiers.
2 per active multi-user database;
if (#users > 50), add 1 per 25 users; if (-B > 400), add 1 per 200 buffers.
SHMSEG
Maximum number of SHM segments a single process can attach.
4-8
SHMALL
Maximum number of in-use SHM segments.
System default; increase if many databases are active simultaneously; decreasing -B, -n, and -L startup parameters decreases SHM requirements.
SHMMAX
Maximum SHM segment size.
System default; increase if you get Progress error 1135.
SEMMNI
Number of semaphore (SEM) IDs; each represents an array of SEMs.
1 per active multi-user database.
SEMMSL
Maximum number of semaphores per SEM ID.
(Max-local-users-on-any-database + Max-#servers-on-any-database + 4).
SEMMNS
Total semaphores in the system.
(SEMMSL x #active-databases).
SEMMNU
Number of semaphore undo structures.
Same value as SEMMNS.
MAXUMEM
Maximum address space for a single user.
> = server size process + SHMSEG * SHMMAX.

The parameter settings in Table 6–6 are guidelines. Parameter values near these are acceptable in most cases, but a particular system or application might require increasing the limits.

If shared memory or semaphores are allocated incorrectly, Progress displays an error message when it attempts to start an additional user or server. For example, if SEMMNS is set too low, PROSERVE fails and displays the following message:

Server: Semaphore limit exceeded
Server: **The server terminated with exit code (X) (800) 

Change the relevant parameter values and reconfigure the kernel in response to semaphore or shared-memory errors at startup. Table 6–7 lists the parameters that you might have to raise in response to various Progress error codes.

Table 6–7: Error Codes and Kernel Reconfiguration Parameters
Error Code
Parameter to Increase
1081
SEMMNU
1093
SEMMSL or SEMMNS
1130
SEMMSL
1131
SEMMNI and SEMMNS
1135
SHMMAX, MAXUMEM, and MAXUP
1137
SHMMNI
1175
SHMSEG, MAXUMEM, and MAXUP
1195
SEMMNS

NOTE: The Blocks in Database Buffers (-B), Lock-table Entries (-L), and Number of Users (-n) startup parameters all affect shared-memory usage. The Number of Users (-n) and Maximum Servers (-Mn) parameters affect semaphore usage (each user or server process uses one semaphore). Before reconfiguring your kernel to increase shared memory or semaphore allocation, see whether you can lower these startup values.


Copyright © 2004 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095