6.3. Active Memory Expansion (AME)

Bei Active Memory Expansion (AME) werden gerade nicht benutzte Hauptspeicher-Seiten komprimiert, damit diese weniger Platz benötigen. Werden z.B. 10 GB Hauptspeicher mit einer Komprimierungsrate von 2 auf 5 GB reduziert, kann damit deutlich Hauptspeicher gespart werden. Eine LPAR kann dann entweder mit entsprechend weniger Hauptspeicher konfiguriert werden (kleinerer Wert von desired_mem), oder die LPAR kann mehr Arbeit bei gleicher Hauptspeicher-Größe verrichten. Die Komprimierung (und Dekomprimierung) von Speicher erfordert CPU-Ressourcen. Der zusätzlich gewonnene Speicher muß im Prinzip mit CPU-Ressourcen für die Komprimierung bezahlt werden. Die Komprimierung und Dekomprimierung muß durch das Betriebssystem durchgeführt werden. Bisher wird AME nur von AIX unterstützt.

In Bild 6.6 ist die Arbeitsweise von AME skizziert. Der Speicher ist in zwei Pools aufgeteilt, den Pool der nicht-komprimierten Speicherseiten (Uncompressed Pool) und den Pool der komprimierten Speicherseiten (Compressed Pool). Im Bild ist eine Komprimierung mit einer Rate von 1.75 angegeben. D.h. das 14 GB Daten, bei einer Komprimierungsrate von 1.75 auf 8 GB komprimiert werden können. Damit werden in 12 GB tatsächlich verfügbarem Speicher 4 GB + 14 GB = 18 GB Daten abgespeichert. Das entspricht einer Speichererweiterung um den Faktor 1.5.

AME turns 12 GB of actual memory into 18 GB of expanded memory with an AME factor of 1.5.
Bild 6.6: Durch AME werden 12 GB tatsächlicher Speicher zu 18 GB erweitertem Speicher mit einem AME-Faktor von 1.5.

Die Größen der beiden Pools sind nicht fix, sie hängen von der Speicherauslastung und dem Zugriffsmuster auf die Speicherseiten ab. Im Bild 6.6 ist also nur ein Moment festgehalten, im nächsten Moment können die Verhältnisse schon geringfügig anders aussehen. Der Zugriff von Prozessen auf komprimierte Speicherseiten ist nicht direkt möglich und auch nicht sinnvoll, da die Daten nicht mehr so vorliegen, wie der Prozeß sie abgespeichert hat. Greift ein Prozeß auf Daten zu, die durch Komprimierung im Compressed Pool liegen, muß das Betriebssystem diese zunächst entkomprimieren und im Uncompressed Pool ablegen. Komprimierte Speicherseiten können nicht auf einen Paging-Space ausgelagert werden.

AME kann für jede LPAR individuell aktiviert oder deaktiviert werden, allerdings nicht dynamisch. Soll für eine LPAR AME verwendet werden, muß der sogenannte AME-Faktor angegeben werden. Dieser gibt an um welchen Faktor der tatsächliche Speicher erweitert werden soll. Die dazu notwendige Komprimierungsrate ist größer, da ja der Uncompressed Pool unkomprimiert bleibt. Im Bild oben war die Komprimierungsrate z.B. 1.75 und der erzielte AME-Faktor 1.5. Ein Teil des Speichers muß immer unkomprimiert bleiben, da sonst das Betriebssystem nicht mehr arbeiten kann.

Wie gut AME in der Praxis dann tatsächlich funktioniert, hängt sehr stark von mehreren Faktoren ab:

    • Wie gut lassen sich die Daten komprimieren, d.h. welche Komprimierungsrate kann tatsächlich erreicht werden?
    • Nach welcher Zeit erfolgt ein Zugriff auf Daten die komprimiert wurden.
    • Passt das Working-Set an Speicherseiten in den Uncompressed Pool, der sich ergibt, nachdem weniger häufig benutzte Daten komprimiert wurden.