000017955 - Calculating kernel parameters for semaphores - what are the requirements when using Remote Administration sessions?

Document created by RSA Customer Support Employee on Jun 14, 2016Last modified by RSA Customer Support Employee on Apr 21, 2017
Version 4Show Document
  • View in full screen mode

Article Content

Article Number000017955
Applies ToRemote Administration
RSA ACE/Server
IssueCalculate kernel parameters for semaphores
Calculate kernel parameters for Remote Administration
Progress error 1131
Progress error 1093
Progress error 1130
Progress error 1195
Progress error 1081
Semaphore Error
System log error: "no more semaphores, shared memory errors"
CauseInsufficient shared resources
Insufficient allocated resources
ResolutionOn a single processor shared-memory system, Progress uses semaphores to synchronize the activities of server and self-service client processes that are connected to a database.  Each database has an array of semaphores, one for each user or server.  Each process uses its semaphore when it must wait for a shared resource.  Semaphores are not used for single-user sessions or for client sessions connecting to a remote database on a server system.

On Multi Processor Systems Progress uses a spin lock algorithm to control access to shared memory structures, not semaphores.

The examples demonstrate settings for Remote Administration Sessions where -n is set to 25 or 50. ***

These values represent the requirements of the ACE/Server installation only.  Other processes on the same Operating System will require resources that must be accounted for in the total actually applied to the kernel.

The sdserv.db file on a master and slave configuration starts with 6 users and 41 semaphores used.
The sdlog.db file on a master and slave configuration starts with 7 users and 29 semaphores used.
The total number of users for a master configuration is therefore 13, and the number of semaphores used is 70.  This total should be considered the recommended value for either a master only configuration or a master and slave configuration.

**         Remote Access Tool = RAT

****        -Mn = Number of Servers startup value This is an abstraction used for grouping ?Mn into sets the size of each set is ranged by the ?Ma and ?Mi values.  

***        -n =  ?Mn times two. For the ACE/Server which connects to two databases per Administrative connection.  
 -n Preallocates semahores". If the Kernel configuration and available memory cannot support the -n value there will be a warning, Only N Wait Semaphores available, on sdconnect start. If the ?n deficit is sufficiently extreme there will be a memory exception error on startup. The n value must be same in startup.pf, sdlog.pf and sdserv.pf files.

        SEMMNI = Max semaphore identifiers for system, one per ACTIVE database
The SEMMNI recommended value in the Installation Guide is 64.  With a master and slave configuration there is an actual total of 3 ACTIVE databases on The Primary and Three on the Slave. Admin DB, Log DB and Report DB.
SEMMNI set too low generates error 1131

        master and slave database's SEMMNI = 3

SEMMSL = Max semaphores per semaphore-identifier (SEMMNI)
SEMMSL = The maximum local users on any databases  + the maximum number of servers on any databases + 4
SEMMSL =  -n + -Mn +4
SEMMSL set too low generates errors 1093 or 1130

The APIs open 2 user sessions as a minimum, more for multi-threading.  The debugger can use an unlimited number of sockets, the values must be estimated and adjusted to suit the task at hand.
Promon, the PROGRESS tool for monitoring resources, uses 200 semaphores, and 1 client.

SEMMNS is the maximum number of semaphores that the user can use on the system.
SEMMNS = SEMMSL * number of ACTIVE databases
SEMMNS set too low generates errors 1093, 1131, 1195

SEMMNU = Max number of semaphore undo structures.

SEMMNU is set equal to one per Progress process connecting to a database for example each server process, self-service client, APW, BIW, AIW, PROWDOG, PROSHUT, and PROMON process.  Each _mprosrv process would therefore add a value of 1 to the number used for SEMMNU.

SEMMNU set too low generates error 1081.

Set SEMMNU to the same value as SEMMNS.


To support 500 Remote Administration connections, and the Report Utility database.
-n = 336       
-Mi= 6

# Start of modified ACE Server config

set shmsys:shminfo_shmmni = 2688                         #  Shared Memory Identifiers
                                                                            #  (shmseg * -Mn)    =   (16 * 168)

set shmsys:shminfo_shmseg = 16                           # Max attached shm segments per process
                                                                            # Local Admin and API might require more, Remote Admin never will
                                                                            # (R A processes on remote workstation)

set shmsys:shminfo_shmmax = 16777216              # Max Shared Memory Segment Size (allocates  another segment when used up)
                                                                           # Don't modify Progress can't use larger.

set semsys:seminfo_semmni = 16                         # Semaphore Identifiers (number of DB's really 3 if you use the report tool)
                                                                           # Don't modify

set semsys:seminfo_semmsl =508                     # Max Semaphores per ID
                                                                           # ( '-n' + '-Mn' + 4 )

set semsys:seminfo_semmns = 8128                       # Semaphores in system ( Max # DB's * semmsl)
                                                                            # [ includes possible report database]

set semsys:seminfo_semmnu = 8128                        # Undo structures for Semaphores in system                                                                   
                                                     # Same as semmns

To support 124 Remote Administration connections, and the Report Utility database.
-n = 84

shmmni = 672

* SharedMemory must be Physical RAM, therefore, there must be sufficient physical RAM available to allocate all the Segments * Processes which use them (-Mn,-n.)

* End of ACE Server config            

 How to run 125 or more Remote Administration sessionsto RSA ACE/Server 6.1.2
WorkaroundAdded Remote Administration Tools.
Legacy Article ID1.0.237704.2172657