Parameter zur Speicherverwaltung im SAP System
Autor: Maria Joanna Born | 11. Dezember 2017
Parameter im SAP schaffen eine hohe Flexibilität. Mit Hilfe von Profilen lässt sich das System für fast jeden Zweck konfigurieren. Doch bei so einer großen Zahl von Parametern verliert man schnell den Überblick darüber welchen Einfluss jeder einzelne Parameter hat. Allein für das Speichermanagement gibt es 20 verschiedene Parameter, die an verschiedenen Stellen im SAP System geändert werden können. Dieser Artikel bringt Ordnung in das Durcheinander und erklärt die wichtigsten Parameter.
Im SAP-System gibt es folgende 3 Arten von Speicher für einen Work Prozess:
• Rollbereich (Roll Area) – Lokaler Speicherbereich für einen Workprozess
• Erweiterten Speicher (Extended Memory) – Globaler Speicherbereich auf den alle Workprozesse zugreifen können
• Privaten Speicher /Dynamischen Speicher(Private Memory/Heap Memory) – Programmprivater Speicher
Parameter für den Rollbereich
Beim Start eines Programms durch einen User wird für diese Programminstanz durch einen Workprozess ein Rollbereich angelegt. Der Nutzerkontext wird in diesem Speicherbereich abgelegt. Die Größe des Rollbereichs für einen Workprozess wird bestimmt durch den Parameter ztta/roll_first.
Reicht der Speicherbereich nicht aus, wird ein Teil des Erweiterten Speichers für den Nutzerkontext allokiert, dessen Größe durch ztta/roll_extension, ztta/roll_extension_dia und ztta/roll_extension_nondia bestimmt wird. Die beiden Letzteren überschreiben ztta/roll_extension falls sie genutzt werden und bieten die Möglichkeit für Dialog- und Nichtdialog-Workprozesse unterschiedliche Quoten festzulegen.
Wenn der zusätzliche Speicher im Erweiterten Speicherbereich für den Nutzerkontext immer noch nicht ausreicht, kann der optionale zweite Rollbereich dafür genutzt werden. Die Größe des zweiten Rollbereichs wird durch die Differenz aus den Parametern ztta/roll_first und ztta/roll_area bestimmt.
Der Rollbereich wurde im Kernel-Release 7.4 abgeschafft, weshalb diese Parameter von da an obsolet sind. Stattdessen wird der Nutzerkontext heute direkt im Erweiterten Speicher abgelegt.
Parameter für den Erweiterten Speicher
Der Erweiterte Speicher enthält also vor allem Nutzerkontexte von verschiedenen Workprozessen, falls diese nicht vollständig in den Rollbereich geladen werden können. Da der Speicherbereich für alle Workprozesse erreichbar ist, können die Workprozesse also auch auf fremde Nutzerkontexte, die hier liegen zugreifen. Außerdem enthält der Erweiterte Speicher einen Globalen Bereich in dem Daten unabhängig von Nutzerkontexten abgelegt werden können.
Die Größe des erweiterten Speichers wird bestimmt durch die Werte von em/initial_size_MB und em/global_area_MB. Hierbei bestimmt der erste Parameter die Größe des Speicherbereichs in dem Nutzerkontexte abgelegt werden können und der zweite die Größe des globalen Bereichs.
Parameter für den Privaten Speicher
Zu guter Letzt gibt es noch den privaten Speicher, welcher nur dann genutzt wird, wenn der Nutzerkontext eines Workprozesses alle anderen ihm zur Verfügung stehenden Speicherbereiche aufgebraucht hat, also seinen Anteil des erweiterten Speichers und seinen Rollbereich. In diesem Fall geht der Workprozess in den PRIV modus.
Ein Workprozess im privaten Modus ist an seinen aktuellen Nutzerkontext gebunden und wird erst dann wieder frei für andere Aufgaben, wenn die aktuelle Anfrage abgeschlossen ist. Falls er dabei den ihm zugewiesenen privaten Speicher vollständig aufgebraucht hat, wird der Workprozess anschließend neu gestartet und der Speicher wieder freigegeben. Dieses verhalten wird mit dem Parameter abap/heaplimit kontrolliert.
Zeitweise kann der Nutzerkontext der Wert von abap/heaplimit dabei auch überschreiten. Die Parameter abap/heap_area_total, abap/heap_area_dia und abap/heap_area_nondia bestimmen eine obere Grenze für den privaten Speicher. Der Parameter abap/heap_area_total definiert wie viel privaten Speicher alle Workprozesse insgesamt nutzen können.
Die Parameter abap/heap_area_dia und abap/heap_area_nondia hingegen bestimmen, wie viel privaten Speicher ein einzelner (Nicht-)Dialog-Workprozess nutzen darf. Wird dieser Parameter von einem Prozess überschritten, so wird die Anfrage abgebrochen, bevor sie zu ende ausgeführt werden konnte. Beide Parameter werden begrenzt durch den Parameter abap/heap_area_total.
Natürlich gibt es noch einige weitere Speicherparameter, die den Rahmen dieses Artikels sprengen würden. In der SAP Dokumentation können Sie deren Funktion nachlesen.