Consultor Eletrônico



Kbase P74257: Unable to start database with more than 1 shared memory segment attached
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   5/22/2009
Status: Verified

SYMPTOM(s):

Unable to start database with more than 1 shared memory segment attached

The data space of the process is not enough for the shm segment (1176)

error 1176 written to the screen and then database startup terminates

Unable to start any other database

Nothing written to the database log files

FACT(s) (Environment):

swap space is 1.5 times RAM
sufficient memory available
Kernel parameters related to shared memory appear to be tuned.
SCO OpenServer
Unix V.4
Progress 9.x
OpenEdge 10.x

CAUSE:

This specific error message (1176) is triggered by :
EAGAIN 11 /* Resource temporarily unavailable */
ENOMEM 12 /* Not enough core */

Without kernel parameters HVMMLIM and SVMMLIM set, Progress can only allocate about 16 MB of shared memory before the 1176 error occurs.
This severely limits the setting for the -B parameter and the number of users that can attach to the database.

The reason for this is that the SVMMLIM and HVMMLIM, which specify the maximum address space that can be mapped to a process, including the amount of space reserved for its stack. These have not been tuned and are still at the default value of 150MB.

When we try to extend the address space of the _mprosrv beyond this value, it fails to do so and we report the OS error in our 1176 message.

FIX:

The resource limit kernel parameters SVMMLIM and HVMMLIM (total address space that can be mapped to a process)should be set to unlimited.

By association, SSTKLIM and HSTKLIM (stack limit size for a process) needs to be tuned in line with SVMMLIM and HVMMLIM, because the amount of virtual address space reserved for the stack is counted against the process's total address space limit represented by SVMMLIM (HVMMLIM). Therefore, an increase in SSTKLIM may require a corresponding increase in SVMMLIM. )

HVMMLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF

2.) Relinking the kernel and system reboot is required in order for these changes take effect.

3.) You should now be able to proserve the database with more than one shared memory segment. These can be verified not only by the fact that the database now starts up, but also in the promon utility:
promon dbname, R&D, 1. Status Displays, 14. Shared Memory