Memory Pipes and MPI Buffers

Use

Memory Pipes (MPI) are memory-based structures used for communicating between the Internet Communication Manager (ICM) and work processes (AS ABAP) or Java server processes (AS Java). They are the channel through which data packets (MPI buffers) are transferred between the sender and the receiver.

Normally one MPI buffer is used for each HTTP connection. If larger data streams are transferred across one connection, several buffers may accumulate on the MPI (queuing, FIDO principle).

However, the number of buffers for each MPI is assigned so that no one connection can use up the entire MPI memory.

Resources for Memory Pipes

Memory

You can define the amount of resources (in particular main memory) available for MPI communication in profile parameters.

The number of MPI buffers is calculated from mpi/total_size divided by mpi/buffer_size.

The memory areas are allocated afresh when the parameters are initialized. As the memory is virtual this is no problem particularly in the 64 bit address space.

Operating System Resources

Two memory pipes, four event flags, and two sockets are used for each HTTP connection.

The number of event flags (two for each memory pipe) is restricted by the operating system. SAP guarantees at least 40000 flags for all supported platforms. The maximum value for parameter mpi/max_pipes is 20500.

MPIs in the SAP Web Dispatcher

In the SAP Web Dispatcher (which does not have to communicate with "external" processes) for symmetry reasons the MPI interface is used for the ICM, as the ICM and Web dispatcher share a common code basis.

MPIs are used in the Web dispatcher purely for memory administration, and not for inter-process communication). For this the Web dispatcher uses the MPI interface in such a way that it does not need event flags. This resource is therefore not relevant for the Web dispatcher.

Resource configuration can be kept the same as in the ICM.