Show TOC

Memory Pipes und MPI-PufferLocate this document in the navigation structure

Verwendung

Memory Pipes (MPI) sind speicherbasierte Strukturen zur Kommunikation zwischen Internet Communication Manager (ICM) und Workprozessen (AS ABAP) bzw. den Java Server-Prozessen (AS Java). Sie stellen also den Kanal dar, über den die Datenpakete ( MPI-Puffer) vom Sender zum Empfänger gelangen.

Hinweis

Auf TCP/IP übertragen entspricht eine Memory Pipe der logischen Netzwerk-Verbindung (das MPI-Handle entspricht dann dem Socket), während die MPI-Buffer den eigentlichen Netzwerk-Datenpaketen entsprechen.

Im Gegensatz zu TCP/IP sind alle Datenpakete (MPI-Buffer) gleich groß, Datenübertragung erfolgt nur unidirektional, dafür effizienter da kopierfrei im Hauptspeicher, d.h. Sender- und Empfänger tauschen im Idealfall nur Hauptspeicher-Referenzen (Pointer) auf die Daten aus.

Im Normalfall wird pro HTTP-Verbindung ein MPI-Puffer verwendet. Falls über eine Verbindung größere Datenströme bewegt werden, kann es sein, dass sich auf der jeweiligen MPI mehrere Puffer "aufstauen" (Queueing, FIFO-Prinzip).

Allerdings ist die Zahl der Buffer pro MPI quotiert, so dass nicht eine Verbindung den gesamten MPI-Speicher verbrauchen kann.

Ressourcen für Memory Pipes

Speicher

Wie viele Ressourcen (insbesondere Hauptspeicher) für die MPI-Kommunikation bereitgestellt werden, legen Sie durch Profilparameter fest.

Weitere Informationen: Parameter für Memory Pipes.

Die Anzahl der MPI Buffer ergibt sich aus mpi/total_size geteilt durch mpi/buffer_size.

Die Speicherbereiche werden bei der Initialisierung komplett allokiert. Da es sich um virtuellen Speicher handelt, ist das insbesondere im 64-Bit-Adressraum kein Problem.

Betriebssystemressourcen

Pro HTTP-Verbindung werden 2 Memory Pipes, 4 Event Flags und zwei Sockets verwendet.

Die Anzahl der Event-Flags (2 pro Memory Pipe) ist durch das Betriebssystem begrenzt. SAP garantiert für alle unterstützten Plattformen mindestens 40000 Flags. Der Maximalwert für den Parameter mpi/max_pipes ist 20500.

MPIs im SAP Web Dispatcher

Im SAP Web Dispatcher (der ja nicht mit "externen" Prozessen kommunizieren muss) wird die MPI-Schnittstelle aus Symmetriegründen zum ICM benutzt, mit dem dieser eine gemeinsame Code-Basis teilt.

MPIs dienen im Web Dispatcher nur als reine Speicherverwaltung, nicht der Interprozess-Kommunikation). Dafür verwendet der Web Dispatcher die MPI-Schnittstelle in einer Art und Weise, die ohne Event-Flags auskommt, diese Ressource ist also für den Web Dispatcher irrelevant.

Die Konfiguration der Ressourcen kann einfach gleich gehalten werden wie im ICM.