pressmaster - stock.adobe.com

PMem und die App Direct Modes: Funktion und Einsatz

Intel Optane PMem kann die Speicherleistung steigern. PMem wird in verschiedenen Zugriffsmethoden betrieben. Das Verständnis dieser Zugriffs-Modi ist für den Erfolg wichtig.

PMem ist die Abkürzung für Persistent Memory, ein neues RAM-Konzept von Intel. Es ist die informelle Bezeichnung für Speichermodule der Baureihe Intel Optane DC Persistent Memory. PMem ist rein technisch also Optane in einem DDR4-DIMM-Formfaktor. Allerdings funktioniert PMem nur mit Intel CPUs – beginnend mit Cascade Lake. Das heißt, das PMem nicht mit AMD, ARM oder IBM Power CPUs zusammenarbeitet.

PMem gibt es in deutlich größeren Kapazitäten als dynamische RAM (DRAM) DIMMs. Während DRAM typischerweise in Kapazitäten von 4 GB bis 128 GB erhältlich ist, können Sie PMem in Kapazitäten von 128 GB, 256 GB und 512 GB bekommen. Es kostet deutlich weniger als die DRAM-DIMMs, mit denen jedes PMem gepaart werden muss. Der Grund für diese Paarung wird deutlich, wenn man betrachtet, wie auf PMem zugegriffen wird.

Grundsätzlich wird bei PMem zwischen zwei Zugriffs-Modi unterschieden. Diese sind der Memory Mode und Application Direct Mode (auch App Direct Mode genannt). Der App Direct Mode hat drei Varianten. Damit stehen insgesamt vier Zugriffs-Modi zur Auswahl.

Memory Mode: großer kostengünstiger RAM ohne Extras

Im Memory Mode wird PMem als Speicher mit höherer Kapazität und geringerer Leistung verwendet. DRAM hat typischerweise eine Lese-/Schreib-Latenz von circa 14 Nanosekunden. Bei PMem beträgt die Latenzzeit etwa 350 Nanosekunden. Damit ist PMem 25 Mal langsamer als DRAM. Deshalb wird PMem mit einem davor gesetzten DRAM-DIMM betrieben. Der DRAM mildert als Lese-/Schreib-Cache vor dem PMem den Leistungsunterschied.

Leider macht der Memory Mode das PMem (obwohl von Haus aus Non-volatile) zu einem flüchtigen Speicher. Bei einem Stromausfall gehen also alle Daten im PMem verloren. In solchen Situationen hat die Anwendung keinen direkten Zugriff auf das PMem, da sie über das DRAM geht.

Der Memory Mode bietet also nicht die Speicherpersistenz, die ja eigentlich für PMem charakteristisch ist. Andererseits ist der größte Vorteil des Memory Mode die Leistung. Der DRAM-Cache maskiert die langsamere PMem-Leistung. Wenn eine Anwendung wie die Online-Transaktionsverarbeitung eine durchgängige, konsistente Datenpersistenz erfordert, auch bei Stromausfällen, ist der App Direct Mode erforderlich.

App Direct Mode: Datenpersistenz bei DIMM-ähnlicher Geschwindigkeit

Der App Direct Mode erlaubt die Persistenz von Daten bei Geschwindigkeiten, die mit der von nichtflüchtigen DIMMs (NVDIMMs) vergleichbar ist, sofern diese dem NVM-Programmiermodell der SNIA (Storage Networking Industry Association) entsprechen. Sie liefern diese Leistung jedoch zu wesentlich geringeren Kosten als bei herkömmlichen DIMMs.

Im App Direct Modus wird PMem vom Computer als extrem schneller nichtflüchtiger Speicher behandelt. Es gibt drei Hauptkategorien für diesen Modus: direkter Zugriff auf das Speichergerät (Raw Device Access), Zugriff per Datei-API und Memory Access.

Der Zugriff über Datei-API hat nochmals zwei Unterkategorien: File System und NVM-aware File System.

Das ergibt folgendes Bild in dieser Tabelle:

Memory Mode

App Direct Mode

Raw Device Access

File API access

File System

NVM-aware File System

Memory Access

Mit jeder dieser Zugriffsmethode kann eine Anwendung verschiedene Softwareebenen umgehen. Die Latenz ist umso geringer, je mehr Softwareebenen umgangen werden. Jeder dieser Ansätze hat seine Vor- und Nachteile.

App Direct mit Raw Device Access

Mit dieser Zugriffsmethode können Anwendungen direkt auf den PMem-Treiber im Host-Betriebssystem lesend und schreibend zugreifen. Der Treiber greift auf das PMem zu. Der PMem-Adressraum ist in Blöcken von 512 Byte bis 4 KB angeordnet. Das ist für die meisten Anwendungen rückwärtskompatibel und vereinfacht so die Implementierungen. Der Raw Device Access ist schnell – deutlich schneller als die Dateisystem-Schnittstelle. Aber er ist nicht annähernd so schnell wie der Memory Mode, und nur wenige Anwendungen verwenden ihn heute.

App Direct mit File-API-Zugriff – FS

Die Zugriffsmethode „File-API – FS“ entspricht bisherigen Zugriffsarten, wie sie für Lese- und Schreibzugriffe auf beliebige Speichermodule über das API des Dateisystems verwendet werden. Die Anwendung gibt Datei-I/O-Aufrufe über eine Dateisystem-API aus. Der FS spricht dann mit dem PMem-Treiber und dem PMem selbst. Es ist einfach und für die meisten Anwendungen rückwärtskompatibel – aber es ist auch der langsamste der sehr schnellen App Direct Modes.

PMem ist eine neue Schicht, die zwischen Arbeitsspeicher und Hochleistungs-Speicher liegt und sich ideal für latenzempfindliche flüchtige Daten eignet, wie Journale, Write-Ahead-Protokolle und sogar Redo-Logs von Datenbanken.

App Direct mit File-API-Zugriff – NVM-aware FS

Ein NVM-fähiges FS nutzt schnellen NVM-Speicher, wie PMem, und läuft deutlich schneller als das Standard-Dateisystem. Viele Betriebssystem-Dateisysteme wurden NVM-fähig gemacht. Ein NVM-fähiges FS ist relativ schnell und einfach zu bedienen.

App Direct mit Memory Access

Diese Zugriffsmethode ist anders als der oben erwähnte Memory-Mode. Memory Access ist eine Zugriffmethode im Modus App Direct.

Anwendungen können damit auf PMem wie auf DRAM zuzugreifen. Der Speicher wird im Byte-Modus verwendet. Zugriffe werden über den Direct Access Channel abgewickelt. Intel hat eine Reihe von Funktionsaufrufen erstellt, die den nichtflüchtigen Speicher auf dem Speicherbus erkennen.

App Direct mit Memory Access umgeht alle Softwareschichten, die die anderen App-Direct-Kategorien benötigen. Es ist bei weitem die schnellste Methode für den Zugriff auf PMem. Für diese Zugriffsmethode müssen die Anwendungen jedoch mit Direct-Access-Channel-Aufrufen (neu) geschrieben werden, denn App Direct mit Memory Access ist nicht rückwärtskompatibel.

Trotz alledem ist Memory Access die App-Direct-Zugriffsmethode, die Softwarehersteller verwenden, wenn sowohl Leistung als auch Speicherpersistenz gefordert sind. Beispielsweise verwenden sowohl SAP HANA als auch Oracle die Zugriffsmethode Memory Access.

Oracles Exadata X8M On-Premises sowie die Dienste Exadata Cloud Service X8M und Exadata Cloud@Customer nutzen PMem auf einzigartige und clevere Weise: Das Exadata-System trennt die Datenbankserver von den Speichersystemen und verbindet sie via 100-Gbit/s-Ethernet. In jedem Speichersystem setzt Oracle 1,5 TB PMem ein. In den Datenbankservern wird PMem nicht eingesetzt. Jeder Datenbankserver hat Zugriff auf jedes Speichersystem per Direct Memory Access über konvergentes Ethernet.

Der PMem jedes Speichersystem ist dreifach gespiegelt für den seltenen Fall, dass ein System ausfällt. Pro Rack lassen sich bis zu 27 TB PMem installieren. In ein Speichersystem packt Oracle 18 und mehr Racks. Das ergibt ein halbes Petabyte und mehr in einem einzigen System.

Zwei neue Anbieter zielen darauf ab, die Einfachheit und Geschwindigkeit des Memory Mode auf die Speicherpersistenz von App Direct Memory Access zu übertragen. Formulus Black und MemVerge bieten Software an, die es Anwendungen ermöglicht, Memory Access ohne Neuprogrammierungen zu nutzen.

Mit diesen Tools wird App Direct Memory Access für Anwendungen rückwärtskompatibel. Die Software verwendet DRAM als Cache, genau wie beim Memory Mode, aber sie ermöglicht es dem PMem, als NVM (Non-Volatile Memory) auch bei Stromausfällen persistent zu sein. DRAM wird aus PMem-Snapshots oder Backups fast sofort wiederhergestellt. Tests haben bei beiden Anbietern eine außergewöhnliche Leistung gezeigt.

Abbildung 1 erklärt, wie die vier App-Direct-Modi von PMem funktionieren.
Abbildung 1 erklärt, wie die vier App-Direct-Modi von PMem funktionieren.

Was bedeutet das für Unternehmen?

Wenn die Auswahlkriterien für Speicherbausteine Geschwindigkeit, niedrige Kosten, Einfachheit, Rückwärtskompatibilität und fehlende Speicherpersistenz sind, genügt der Memory Mode. Werden Persistenz, Anwendungs-Rückwärtskompatibilität, angemessene Leistung und niedrigste Kosten gefordert, ist PMem im App Direct Modi „Raw Device Access“, „File API FS“ und „File API NVM-aware FS“ sehr gut geeignet.

Sind gute Leistung und Speicherpersistenz erforderlich, dann ist der App Direct Memory Access die beste Wahl. Für Anwender, die keine Anpassungen an ihren Anwendungen vornehmen möchten, aber die Leistung und Persistenz des Speicherzugriffs wünschen, sind Formulus Black und MemVerge geeignete Alternativen.

Tipps zur Anpassung von Anwendungen für Memory Access

Das erste, was man sich merken sollte, ist, dass PMem mehr als nur Hochleistungsspeicher ist. Es ist eine neue Schicht, die sich zwischen Arbeitsspeicher und Hochleistungsspeicher befindet. Das macht es ideal für latenzempfindliche, flüchtige Daten, wie Journale, Write-Ahead-Logs und sogar Datenbank-Redo-Logs.

Abbildung 2: Die unterschiedlichen Modi von PMem im Vergleich.
Abbildung 2: Die unterschiedlichen Modi von PMem im Vergleich.

Beachten Sie, dass die Anwendung den Cache nicht mehr „flushen“ (also leeren) muss, wenn es zu einem Stromausfall kommt. Wird dies nicht berücksichtigt, kann die Leistung sinken und die Vorteile des Memory Access werden neutralisiert.

Intel stellt umfangreiche Development Kits für Persistent Memory bereit, so dass Entwickler das Rad nicht neu erfinden müssen. Sie enthalten effektive, einfach zu verwendende APIs. Die Nutzung dieser Bibliotheken spart Zeit, Aufwand und Geld und verkürzt die Zeit bis zur Marktreife beziehungsweise bis zum Projektabschluss.

Einer der führenden Anwendungsfälle für Speicherzugriff sind Key-Value-Stores. Persistent In-Memory Key-Value (PMemKV) kommt mit einem eingebetteten Key-Value-Store. Das bedeutet, dass die Anwendung keine vollen Speicherblöcke lesen muss, da sie direkt aus dem PMem auf die Schlüssel und Werte zugreift.

Es gibt keine Zuweisung von flüchtigen Speicherpuffern. Daten werden an Ort und Stelle ohne Lese-Änderungs-Schreib- (Read-Modify-Write-) Operationen modifiziert, was die Write Amplification stark reduziert. Obwohl PMem die 60-fache Anzahl an Schreibzyklen gegenüber von NAND-Flash hat, reduziert die Write Amplification die Lebensdauer des PMem mit der Zeit.

Auch die PMemKV-Speicher-Engine-Optionen sind es wert, genutzt zu werden. Sie ermöglichen sortierte und unsortierte Concurrent Engines und implementieren Hash Maps, Red-Black, B+ und Radix-Bäume. Sie sind leicht erweiterbar und neue Speicher-Engines können schnell erstellt werden, um den Anforderungen der Anwendung zu entsprechen. PMemKV spart eine Menge Zeit. Ohne PMem muss eine Anwendung, die einen bestimmten Wert sucht, eine Menge Daten vom Speicher in den DRAM kopieren und dann die Daten durchsuchen. Mit PMemKV sucht die Anwendung nach dem Schlüssel, erhält eine Referenz auf den Wert und greift direkt darauf zu.

Schließlich gibt es PMem-fähige Java-Bibliotheken. Dies ist eine enorme Zeitersparnis, die es Java-Entwicklern ermöglicht, PMem ohne Code-Änderungen zu nutzen. Zum Beispiel kann die Java VM den Heap von Java-Objekten auf PMem allokieren, wiederum ohne Code-Änderungen. PMem-Konstrukte werden zunehmend zu Java hinzugefügt.

Fazit

Intel Optane PMem kann einen erheblichen Einfluss auf die Speicherleistung und die Datenausfallsicherheit haben. Dazu muss diese Art von Speichermodulen richtig eingesetzt werden. Wann ist der Memory-Mode besser, wann App-Direkt-Modus? Welche App-Direkt-Methode ist richtig? Das Verständnis dieser Zugriffs-Modi ist der Schlüssel zum richtigen Einsatz von PMem.

Erfahren Sie mehr über Flash Storage und SSD