The shared memory pool 10 or 40 that is calculated in sappfpar and disp+work is too small. As a result, the startup of R/3 servers may fail.
The required size of a pool is calculated according to the sizes of the shared memories contained in the pool and is calculated in startup and sappfpar. In this case, the sizes of the individual shared memories that are contained are estimated by applying the known contexts between profile parameters and the resulting size of shared memories. This estimate also contains safety reserves. However, these cannot be too large because of operating system limitations.
The estimate is inaccurate if the actual size of a shared memory is very different from the size that is defined by the profile parameter. Due to kernel patches, the size of shared memories may change without the size estimation being adjusted accordingly.
The error may also occur if values of specific profile parameters (for example, rdisp/tm_max_no) change considerably, and if safety reserves that have already been used are no longer sufficient.
The size of the ABAP program buffer is set with ABAP/buffersize = 500,000 on 50,000KB (approximately 489MB). However, in reality, a shared memory with approximately 532,000,000 bytes (approximately 52,000 KB, approximately 508 MB) is created. As of Release 4.6x, the previous safety reserves are no longer sufficient and must be increased.
Increase the size of the shared memory pool in the profile, for example, with
ipc/shm_psize_10 = <size in bytes>
ipc/shm_psize_40 = <size in bytes>
if the pool cannot or should not be increased, you can extract individual shared memories from the pool, for example, with ipc/shm_psize_06 = 0 Extract ABAP program buffer (key 6) from the pool
ipc/shm_psize_06 = -40, or move it into pool 40
Apply the kernel patch.
The patch text is as follows:
shared memory pool size estimation (note 212902)
The patch may occur repeatedly in a Release. Therefore, use the most current kernel to ensure that new problems that may occur are also corrected.