RAM / Swap-Benutzung in Betriebssystemen

Ein Betriebssystem besitzt eine feste Anzahl von Ram und zusätzlichen Auslagerungsspeicher auf Festplatte.

Unter Linux nennt sich dieser SWAP unter Windows ist es der Auslagerungsspeicher – pagefile.sys

In einem perfekt abgestimmten System, wo immer mehr RAM als benötigt verfügbar ist, werden niemals Daten aus dem RAM ausgelagert.

Das System nutzt den Arbeitsspeicher für unterschiedliche Dinge.

Der Arbeitsspeicher wird unter Linux in Pages – gleichgroße Blöcke mit einigen Kilobyte unterteilt. Benötigt eine Anwendung mal mehr, mal weniger Speicher, werden Blöcke in den Speicher verschoben oder von dort entfernt.

Wenn eine Anwendung mehr Speicher benötigt, als vorhanden ist, werden ältere – bereits seit Längerem nicht mehr genutzt Blöcke aus dem RAM entfernt. Benötigt eine Anwendung Blöcke, die zuvor aus dem Ram entfernt wurden, wird durch erneutes Entfernen von Blöcken Platz geschaffen, und die nötigen Blöcke für die Anwendung wieder in den Speicher verschoben.

Der Dateisystem-Cache, Programmcode und gemeinsam verwendete Bibliotheken besitzen immer eine Quelle im Dateisystemen. Existieren also lesbar im Dateisystem. Der davon belegte Speicher kann also jederzeit für andere Dinge verwendet werden. Besteht erneut Bedarf, liest das Betriebssystem die Daten einfach erneut von Platte.

Temporäre Anwendungsdaten und Stack-Space liegen nicht im Dateisystem vor. Die Rede ist deshalb hier von anonymen Pages – da Sie nicht im Dateisystem existieren.

Diese Pages/Blöcke müssen zwingend für die Ausführungszeit der Anwendung im RAM bleiben, da sie nicht aus dem Dateisystem wiederhergestellt werden können. Es sei denn, es gibt einen alternativen Speicherort für diese Pages/Blöcke. Den alternativen Speicherort nennt man Auslagerungsspeicher also Swap.

Swap wird nur für anonyme Pages verwendet. Dateisystemcache, Programmcode und gemeinsam verwendete Bibliotheken werden niemals in den Swap ausgelagert.

Somit kann eine Swap-Nutzung auch Vorteile besitzen. Wenn z.B. länger ungenutzte Laufzeitdaten (z.B. Anwendung läuft nur sporadisch) die Daten in den Swap verschiebt und der RAM für aktuell laufende Anwendungen verwendet werden kann.

    Systemindikatoren:

TOP Kein Swap-Space in Verwendung.

GUT Space in Verwendung – fast keine Last jedoch auf SWap-Partition. Das heißt, es wurden Daten in SWAP ausgelagert, bei wenig I/O werden diese jedoch nicht angefordert bzw. es werden wenig neue in SWAP geschrieben

OK SWap in Verwendung und regelmäßiger I/O auf Swap. CPU Wait kann auftreten, durch das swapping – System ist aber weiterhin stabil/performant.

NICHT OK – Zu viel swapping – hoher I/O auf Swap Partition. CPU verliert viel Zeit bei Sys oder Wait –

NICHT OK – zu wenig Swap verfügbar – System läuft flüssig aber für neue Programme ist kein virtueller Speicher mehr verfügbar.

Der wert vm.swapiness (Angabe Prozentsatz – Default 60) definiert, wie aggressiv geswapped werden soll.

Bei Speicherengpass werden dann je nach Wert nur ein geringer oder hoher Teil temporärer Anwendungsdaten und Stack-Spaces in den Swap verschoben.