Öffnet in einem neuen Tab
Eigener NUMA-Knoten

CRAM: Komprimierter Arbeitsspeicher ohne Swap für Linux

Meta-Entwickler Gregory Price stellt CRAM vor. Komprimierte Daten bleiben im RAM direkt lesbar, Lesezugriffe sollen bis zu 452-mal schneller sein als bei ZRAM.

CRAM: Komprimierter Arbeitsspeicher ohne Swap für Linux
Bildquelle: Shutterstock/jivacore

Gregory Price und sein Team bei Meta haben mit CRAM einen neuen Ansatz zur Komprimierung von Arbeitsspeicher unter Linux vorgestellt. Präsentiert wurde er auf der Linux Plumbers Conference in Prag. Die Angaben stammen aus den dort veröffentlichten Vortragsfolien. In den Linux-Kernel aufgenommen ist CRAM bislang nicht.

Unter Linux sind zswap und ZRAM die verbreitetsten Verfahren, um Arbeitsspeicher zu komprimieren. Beide arbeiten auf der Ebene des Auslagerungsspeichers (Swap). Laut Price entsteht der größte Leistungsverlust dabei nicht durch die Kompression selbst, sondern durch die Seitenfehler und das Swap-Verhalten.

Eigener NUMA-Knoten statt Blockgerät

CRAM hält die komprimierten Daten deshalb im Arbeitsspeicher und behandelt sie als Arbeitsspeicher, statt sich wie ZRAM als Blockgerät auszugeben. Dazu nutzt es einen privaten NUMA-Knoten, gewissermaßen einen Prozessor ohne Rechenkerne. So kann Linux seine bestehenden Mechanismen zur Speicherverwaltung weiterverwenden, darunter die Migration von Speicherseiten und das sogenannte Ballooning. Auf die komprimierten Daten lässt sich byte- und cachezeilengenau zugreifen. Bei Lesezugriffen fällt im Wesentlichen nur die Dekompression an, die die Hardware übernimmt.

Anzeige

Deutlich langsamer bei Schreibzugriffen

In den Tests von Meta erreichte CRAM bei reinen Lesezugriffen im ungünstigsten Fall 489 Millionen Operationen pro Sekunde, ZRAM kam auf 1,1 Millionen. Das entspricht dem Faktor 452. Bei einem Schreibanteil von 20 Prozent lag CRAM noch um den Faktor 5,4 vorn. Der Abstand schrumpft, weil komprimierte Daten nicht direkt beschrieben werden können. Betroffene Speicherseiten müssen per Seitenfehler zurück in den ursprünglichen NUMA-Bereich verschoben werden.

Speichergröße noch ungeklärt

Offen ist laut den Folien noch, wie viel logischer Arbeitsspeicher zur Verfügung steht, da sich Daten je nach Inhalt unterschiedlich stark komprimieren lassen. Damit ist auch schwer vorherzusagen, wann der Speicher ausgeht. Ein sogenanntes Chicken Bit soll verhindern, dass Linux CRAM nutzt, während die Zuweisungen verwaltet werden. Es soll eine Kaskade von Fehlern verhindern, wenn Schreibzugriffe schneller erfolgen, als CRAM Speicher zuweisen kann.

Zswap und ZRAM sind unter Linux weit verbreitet und in vielen Distributionen standardmäßig aktiviert, etwa auch auf dem Steam Deck.

(red)

Anzeige
Anzeige