Show TOC

Background documentationMemory Pipes and MPI Buffers Locate this document in the navigation structure

 

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.

Note Note

In terms of TCP/IP communication, a memory pipe represents the logical network connection (the MPI handle is the socket), while the MPI buffers represent the actual network data packets.

Unlike TCP/IP, all data packets (MPI buffers) are equal in size and data transfer is unidirectional only and more efficient as data is not copied to the main memory - senders and receivers only exchange main memory references (pointers) to the data.

End of the note.

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.

More information: Parameters for Memory Pipes

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.

More information: SAP Web Dispatcher