Swapping

Bei der Verarbeitung großer Datenmengen entsteht beim Profildurchlauf ein entsprechend großer Bedarf an Arbeitsspeicher. Ist nicht mehr genügend Arbeitsspeicher vorhanden, führt dies zu einer Verschlechterung der Gesamtperformance oder im Extremfall zu Fehlern beim Profildurchlauf (OutOfMemoryException). Um dem entgegenzuwirken, können während des Profildurchlaufs Daten auf die Festplatte ausgelagert werden (Swappen) und somit den Bedarf an Arbeitsspeicher reduzieren.

Bei der Auslagerung werden Datenblätter auf der Ein- und/oder Ausgangsseite eines Mappings ausgelagert. Falls beim Parsen (Phase 2) keine Datenblätter ausgelagert wurden, verbleiben diese im Speicher. Eine rückwirkende Auslagerung der Datenblätter der Quellstruktur ist nicht möglich.

Die Festlegung ob und wie ausgelagert werden soll, wird für jedes Profil einzeln getroffen. D ie Einstellungen finden Sie auf Seite "Phase 2/Erweitert".

Einstellungen


(1) Daten temporär auf Festplatte schreiben: Gibt an, ob Daten ausgelagert werden sollen.

(2) Bei Speicherbelegung von: Gibt den Grenzwert für die Speicherbelegung der virtuellen Maschine an, bei dessen Überschreitung die Auslagerung angestoßen werden soll. Die Speicherbelegung berücksichtigt dabei nicht nur den Speicherverbrauch des aktuellen Profils, sondern die gesamte Speicherbelegung, also alle Profile plus die Programmressourcen. Hat der Grenzwert den Wert 0, wird sofort ausgelagert. Folgende Abbildung zeigt eine schematische Darstellung des Verlaufs der Speicherbelegung der virtuellen Maschine ohne Auslagerung.

images/download/attachments/162409400/Image_018-version-1-modificationdate-1702361948718-api-v2.jpg

Lazy Swapping

Folgend der Verlauf der Speicherbelegung bei aktivierter Auslagerung ("Lazy Swapping").

images/download/attachments/162409400/Image_019-version-1-modificationdate-1702361948716-api-v2.jpg


(1) Eingestellter Grenzwert für die Speicherbelegung, z. B. 40 %.

(2) Nach x Datenblättern wurde der Grenzwert überschritten. Das wird nach dem Abschluss des Datenblatts festgestellt und es werden 1/3 (aber maximal 100) der Datenblätter auf der Ausgangsseite ausgelagert. Ist danach die Speicherbelegung immer noch zu hoch, wird ein weiteres Drittel (aber wieder maximal 100) der Datenblätter ausgelagert. Dieser Vorgang wiederholt sich so lange, bis die Speichergrenze unterschritten, oder alle Datenblätter ausgelagert sind.

(3) Speicherbelegung nach n Wiederholungen von (2).

(4) Nach weiteren y Datenblättern wurde die Speichergrenze erneut überschritten. Der Ablauf in (2) wird wiederholt.

(5) Speicherbelegung nach erneuten m Wiederholungen von (2).

Da bei diesem Verfahren versucht wird, immer nur so viele Datenblätter wie nötig auszulagern, nennt man dieses Verfahren "Lazy Swapping". Dies ist das Standardverfahren für die Auslagerung von Daten.

Werden sehr viele Profildurchläufe parallel gestartet, kann es passieren, dass das Lazy Swapping nicht mehr in der Lage ist, dafür zu sorgen, dass genügend Arbeitsspeicher zur Verfügung steht. Aus diesem Grund gibt es zusätzlich die Möglichkeit des "Busy Swappings".

Busy Swapping


Beim "Busy Swapping" wird nach jedem Datenblatt geprüft, ob die prozentuale Speicherbelegung innerhalb der virtuellen Maschine größer ist als die eingestellte erlaubte Maximalbelegung. Ist dies der Fall, werden alle bereits erstellten Datenblätter auf die Festplatte ausgelagert. Folgende Abbildung zeigt die Speicherbelegung mit Auslagerung ("Busy Swapping").

images/download/attachments/162409400/Image_020-version-1-modificationdate-1702361948714-api-v2.jpg


(1) Eingestellter Grenzwert für die Speicherbelegung, z. B. 40 %.

(2) Nach dem x-ten Datenblatt wurde der Grenzwert überschritten. Das wird nach dem Abschluss des Datenblatts festgestellt und es werden alle erstellten Datenblätter ausgelagert.

(3) Speicherbelegung nach Auslagerung aller Datenblätter.

(4) Nach weiteren y Datenblättern wurde die Speichergrenze erneut überschritten. Erneut werden alle Datenblätter ausgelagert.

Der Nachteil des Busy Swappings gegenüber dem Lazy Swapping ist, dass gegebenenfalls mehr Datenblätter als notwendig auslagert werden. Dies kann bei der weiteren Verarbeitung zu Performance-Einbußen führen.

Konfiguration


Die Festlegung, ob und wie ausgelagert werden soll, wird für jedes Profil getrennt getroffen. Die Festlegung, welches Verfahren für die Auslagerung verwendet werden soll, wird dagegen global für alle Profile getroffen. Der folgende Ausschnitt zeigt den Eintrag in der Konfigurationsdatei ./etc/startup.xml mit dem das Lazy Swapping aktiviert wird. Zur Aktivierung des Busy Swapping wird der Wert lazySwapping von true auf false geändert.

Hinweis: Die Umstellung von Lazy Swapping auf Busy Swapping sollte nur in Ausnahmefällen und nur in Absprache mit dem Support erfolgen.

<!-- enable lazy swapping of temp. data -->‌
<Set name="lazySwapping">true</Set>

E-Mail-Benachrichtigung


Es wird alle 5 Minuten überprüft, ob es Jobs mit einer Swap-Datei >= 20 GB gibt. Diese werden einmalig per E-Mail gemeldet (→ ./etc/startup.xml). Es wird dabei intern ein Flag gesetzt, dass bereits eine E-Mail versendet wurde (egal für welchen Job). Ist bei der nächsten Prüfung kein Job mit Limit-Überschreitung vorhanden, wird das Flag zurück gesetzt, ansonsten bleibt das Flag bestehen, aber es wird keine neue Mail versendet (auch nicht, wenn neue Jobs hinzugekommen sind).