The shared memory area for interprocess communication (IPC shared memory area) requires the UTM application for the exchange of messages between its processes. It is created by openUTM. If this area is too small, then performance bottlenecks can arise and connections may be cleared.
Most of the IPC shared memory area is used to store the messages that are exchanged between the processes of an application. This area will be called the data area in the following discussion. The rest of the shared memory is used to administer the processes and their connections.
The data area in IPC shared memory is organized in 4 KB blocks.
The size of the IPC shared memory is set by openUTM for each application. The size is mainly determined by the number of communication partners generated and by the number of semaphores generated. See also "Semaphores" (System resources required by a UTM application).
openUTM creates a data area of approximately 10 * 4 KB for each semaphore key generated. In addition, openUTM creates a a data area of approximately 4 KB for each communication partner generated.
The data area created by openUTM may be too small if a lot of data is sent over the connection to the communication partners. This can lead to performance bottlenecks and therefore to the clearing of connection. To prevent this, you can change the size of the IPC shared memory. The environment variables UTM_IPC_LETTER and UTM_IPC_EXTP_LETTER are used to do this. You can change the absolute size of the IPC shared memory with UTM_IPC_LETTER, and with UTM_IPC_EXTP_LETTER you can change the maximum size of the data area in IPC shared memory that is available for a single connection.
Changing the absolute size of the data area
The data area in IPC shared memory is distributed amongst the existing connections according to the “first come - first served” principle. If the entire data area is in use, then connections are cleared.
openUTM then outputs the following message:
U189 IPC bottleneck &IPCOBJ &IPCREAS
with the inserts &IPCOBJ=LETT and &IPCREAS=IPC FULL or EXTP FULL.
You can increase the absolute size of the data area using the environment variable UTM_IPC_LETTER to prevent this. In UTM_IPC_LETTER you specify the number of 4KB blocks that are to comprise the IPC shared memory. The smallest value allowed is 5 (corresponding to 20KB).
A change to UTM_IPC_LETTER will only take effect after the next start of the UTM application. UTM_IPC_LETTER is evaluated at the start of the application by the first work process.
If you have very little data, then you can also decrease the size of the data area with UTM_IPC_LETTER. You can then reduce the amount of overhead required by the operating system to administer the IPC shared memory.
Changing the maximum data area for the messages produced by a connection
All connections are basically handled in the same manner when allocating space in the data area in IPC shared memory. To prevent the data area from being used up from just one connection, there is a default maximum size of 64 KB (16 * 4KB) that can be used by one connection at any one time. If all 64 KB are already in use by one connection, then the connection is cleared.
openUTM then outputs the following message:
U189 IPC bottleneck &IPCOBJ &IPCREAS
with the inserts &&IPCOBJ=LETT and &IPCREAS=MAX ILETT or MAX OLETT.
You can increase the maximum size of the data area available for a connection using the environment variable UTM_IPC_EXTP_LETTER to prevent this.
With UTM_IPC_EXTP_LETTER you can specify the maximum size of the data area available for a connection in 4KB blocks. The default value is 16. The smallest value allowed is 1 (corresponding to 4KB).
A change to UTM_IPC_EXTP_LETTER will only take effect after the next start of the UTM application. UTM_IPC_EXTP_LETTER is evaluated at the start of the application by the first work process.