Flash SSD und 3DXP SSD

NVMe - ein Protokoll für mehr Storage-Performance

12.01.2018
Von Umesh Maheshwari
Mit der voranschreitenden Digitalisierung verlangen immer mehr Unternehmen nach schnellen Storage-Systemen mit geringen Latenzzeiten. Geräte mit Flash-SSD und SAS/SATA- oder NVM-Express-Schnittstelle sind zurzeit das Maß der Dinge. Doch die nächste Speichergeneration mit 3D XPoint inklusive NVM-Express-Interface steht bereits am Start.

Non-Volatile Memory Express (NVMe) - nicht zu verwechseln mit dem Storage Medium NVM (Non Volatile Memory). NVMe ist ein relativ neues Protokoll, um auf Daten, die auf SSDs gespeichert sind, zuzugreifen. Vorgänger wie SAS oder SATA hatten den Nachteil, dass sie im Vergleich langsamer und schwerfälliger sind. Mit dem neuen Protokoll wird die Latenz um etwa 20 µs heruntergeschraubt. Das ist bei schnelldrehenden Festplatten und Latenzzeiten von 5000 µs natürlich zu vernachlässigen. Allerdings wird es bei Flash SSDs mit Latenzen von 100 µs schon interessanter. Allerdings wirkt sich NVMe bei zukünftigen SSDs mit 3DXP (3D-XPoint-Technologie) mit Latenzzeiten von weniger als 10µs erst dramatisch aus. Zu berücksichtigen ist zudem, dass Flash SSDs mit SAS/SATA oder NVMe verfügbar sind, 3DXP-SSDs aber ausschließlich mit NVMe funktionieren werden.

Von Flash SSDs lassen sich sowohl mit SAS/SATA als auch NVMe Daten lesen und schreiben, bei 3DXP ist dies nur über NVMe möglich.
Von Flash SSDs lassen sich sowohl mit SAS/SATA als auch NVMe Daten lesen und schreiben, bei 3DXP ist dies nur über NVMe möglich.
Foto: Nimble Storage

Über Latenzen hinaus verbessert NVMe auch die Bandbreite von SSDs, indem es SSDs über PCIe (Peripheral Component Interconnect Express) direkt mit der CPU verbindet. Das hat zur Folge, dass eine große Anzahl von PCIe-Lanes genutzt werden können, ohne dass ein zusätzlicher HBA (Host-Bus-Adapter) benötigt wird. Eine "SAS-Lane" erreicht 12 GB/s und sinkt nach Abzug des Overheads auf rund 1 GB/s ab. Eine "SATA-Lane" unterstützt die Hälfte davon, da sie nur im Halbduplex- statt Fullduplex-Modus arbeitet.

Eine PCIe-Lane (Gen3) läuft mit 1 GB/s und eine typische NVMe-SSD kann mit vier solcher Lanes verbunden werden, um einen Datentransferrate bis zu 4 GB/s zu erreichen. Natürlich sind NVMe-Befürworter schnell dabei eine SATA-SSD, die real mit 0,5 GB/s läuft, mit einer NMVe-SSD, die mit 3 GB/s läuft, zu vergleichen. In der Endrechnung spricht für eine NVMe-SSD ein 6-mal höherer Praxisdurchsatz.

Allerdings besteht ein Storage-System aus verschiedensten SSDs, typischerweise mehr als 10. Bei so vielen SSDs ist der Durchsatz auf Laufwerkebene kaum der Flaschenhals oder der entscheidende Faktor für den Datentransfer auf Systemebene. Hier spielen andere Aspekte eine Rolle.

Mehr Performance auf System-Ebene

Im Allgemeinen ist die Performance eines Storage-Systems abhängig von den folgenden Ressourcen:

• Das Frontend-Netzwerk, dass die Anwendung mit dem Storage verbindet.

• Die CPUs, auf denen die Storage-Software läuft.

• Die I/O Verbindung zwischen den CPUs und Storage-Laufwerken oder -Modulen: Bei einem System mit SAS/SATA-Laufwerken gehören dazu PCIe-Lanes, ein SAS-HBA, SAS-Lanes und vielleicht ein SAS-Expander. Die komplette Bandbreite dieser Verbindung beziffert sich generell auf 12 GB/s. Bei einem System, dass NVMe nutzt, sind PCIe-Lanes und vielleicht ein PCIe-Switch enthalten. Die komplette Bandbreite dieser Verbindung liegt typischerweise bei 8-24 GB/s.

• Die Storage-Laufwerke, darunter das Storage-Medium und die Medium-Kontroller.

Verbindung zwischen Anwendung und CPU sowie Laufwerken durch das Frontend Netzwerk und I/O Interconnect.
Verbindung zwischen Anwendung und CPU sowie Laufwerken durch das Frontend Netzwerk und I/O Interconnect.
Foto: Nimble Storage

Welche dieser vier nun zum Flaschenhals für die Performance wird, hängt von der Systemarchitektur und dem Workload wie Lese- vs. Schreib-Vorgängen und Random vs. Sequentiell ab.

Bei traditionellen Storage-Systemen, die Festplatten nutzen, begrenzt die Anzahl der HDDs die Geschwindigkeit. Dagegen verhalten sich moderne Systeme, die Flash-Laufwerke benutzen, gänzlich anders. Vor allem sind sie deutlich schneller als Festplatten. Für die meisten Workloads sind Flash-basierte Systeme durch die CPU begrenzt. Die CPU ist meist damit ausgelastet, Datendienste wie Hochverfügbarkeit, Datenreduktion und Datensicherung zur Verfügung zu stellen.

Weniger üblich ist, dass ein Flash-basiertes System durch die Anzahl der SSDs begrenzt wird. Das kann aber passieren, wenn zum Beispiel ein System nur über eine kleine Anzahl an SSDs verfügt, wenn es die Last nicht über alle Laufwerke verteilen kann, oder wenn es ältere Laufwerke nutzt, die nicht gänzlich das SAS/SATA-Interface auslasten können. Noch seltener kommt es vor, dass ein System durch den Interconnect oder das Frontend-Netzwerk limitiert wird. Dies kann etwa bei speziellen Workloads passieren, zum Beispiel bei Lastspitzen mit sequentiellem I/O und großen Blöcken oder wenn das Storage-System so ausgelegt wurde, das es maximale Performance auf Kosten von anspruchsvollen Datendiensten bereitstellt.

Sollte das System durch die CPU limitiert sein, könnte der Einsatz von NMVe im Gegensatz zu SAS/SATA die Performance verbessern, weil der NVMe-Treiber die CPU effizienter nutzt, als der herkömmliche SCSI-Treiber. Aber dieser Gewinn ist moderat - weniger als 20 Prozent - weil der größte Teil der CPU von Datendiensten genutzt wird und nicht von Protokoll-Treibern des Storage-Systems.

Die Performancewerte mögen bei den zurzeit angebotenen Storage-System variieren, deshalb sollten IT-Verantwortliche jeden Storage-Anbieter, der NVMe-basierte Systeme offeriert, nach dem "Mehr" an Performance fragen, die aufgrund der eigenen Workloads zu erwarten ist und nicht aufgrund der Hersteller-Benchmarks.

Glücklicherweise kann NVMe mit einfachen Layout-Änderungen in ein Storage-System integriert werden und das ohne große Veränderungen der eigentlichen Storage-Architektur. Dabei gibt allerdings einen Haken: NVMe-SSDs mit Dualports sind teuer. Diese sind aber notwendig, um hochausfallsichere Systeme zu bauen. Allerdings wird der Preis entsprechender NVMe-Systeme in naher Zukunft wahrscheinlich in die Nähe von SATA-SSDs fallen. Im laufe der Zeit werden so alle Flash-basierten Systeme auf NVMe umsteigen. Manche Hersteller werden es früher tun als andere, aber es wird den Storage-Markt nicht fundamental umkrempeln.

Insgesamt lässt sich sagen, dass NVMe-SSDs in einem Storage-System zu nutzen vergleichbar ist, wie hoch performante Reifen bei einem Auto zu verwenden. In den meisten Fällen bieten sie eine kleine Verbesserung der Leistung und benötigen keinen Austausch des Motors. Nett, aber kein wirkliches Unterscheidungskriterium.

Interessanter ist eine derzeitige Erweiterung von NVMe, bekannt als NVMe over Fabrics (NVMf) . NVMf führt I/O-Operationen über Hosts, die Remote-Drect-Memory-Access-fähige (RDMA) Netzwerke wie RDMA-over-Converged-Ethernet (RoCE) nutzen, aus. Während das NVMe-Protokoll über PCIe die Roundtrip-Latenzzeit um ungefähr 10µs im Vergleich zu SAS verringert, reduziert NVMf diese um 100µs im Vergleich zu Protokollen wie iSCSI. Darüber hinaus senkt es die CPU-Auslastung bei TCP/IP-Prozessen. Dies kann bei Scale-Out-Systemen für die Übertragung von Daten zwischen Hosts vorteilhaft sein. Dafür benötigt werden RDMA-fähige Network-Interface-Cards (NICs) und Data-Center-Bridging-fähige (DCB) Switche. Bis es soweit ist, wird noch etwas Zeit vergehen.

Turbo für 3D-XPoint-SSDs

Während NVMe für Flash-SSDs eine nette Ergänzung ist, ist NVMe dagegen für 3DXP-SSDs essenziell. Federführend bei der Einführung des neuen Storage-Protokolls war 2011 Intel. Darüber hinaus gilt das Unternehmen als Co-Erschaffer von 3DXP.

Die interne Latenzzeit von 3DXP-SSDs beträgt weniger als 10µs, was deutlich schneller ist als 100µs bei Flash-SSDs. Das bedeutet, dass Workloads mit geringer Warteschlangentiefe - mit wenig ausstehenden I/O-Operationen - viel schneller auf 3DXP-SSDs laufen als auf Flash-SSDs. Wenn man eine 3DXP-SSD mit SAS- anstatt mit NVMe-Schnittstelle nutzt, würde es die Latenz mehr als verdreifachen und somit den Vorteil von 3DXP minimieren.

Mit Latenzzeiten von 10µs stellt die 3DXP-Speichertechnologie einen fundamentaleren Wandel im Storage-Umfeld dar, als das NVMe-Protokoll alleine betrachtet. 3DXP führt einen neuen und ausdifferenzierteren Layer in die Storage Medium-Pyramide ein und zwar zwischen Flash und NVRAM (basieren auf DRAM).

Im Vergleich zu Flash-SSD ist eine 3DXP-SSD zirka 10-mal schneller bei einer geringen Warteschlangentiefe und toleriert 10-mal mehr Schreibzyklen. Allerdings ist diese neue Speichertechnologie auch 10-mal teurer pro Gigabyte. Wenn wir uns diesen preislichen in Hinblick auf Preis und Performance vor Augen führen, wäre es da nicht sinnvoll Flash und 3DXP SSDs zu kombinieren, so dass Flash für das Speichern von Daten und 3DXP für das Speichern von Metadaten oder Caching Daten genutzt wird. Dieser hybride Ansatz von Systemen mit herkömmlichem Flash und 3DXP wäre deutlich attraktiver als reine Flash-Systeme.

Die verschiedenen Speichermedien und Protokolle auf einen Blick.
Die verschiedenen Speichermedien und Protokolle auf einen Blick.
Foto: Nimble Storage

Das volle Potential der 3DXP-Speichertechnologie wird sich auch nicht bei SSDs mit NVMe-Schnittstelle vollends ausschöpfen lassen, sondern erst mit NVDIMM auf dem Speicherbus. Das liegt daran, dass die tatsächliche Latenz von 3DXP-Speicher auf weniger als 1µs geschätzt wird und wenn es in eine SSD gepackt wird, zu einer erhöhten Latenzzeit von 10µs führt. So bleibt festzustellen: Erst eine perfekte Symbiose aus Speichermedium und des entsprechenden Speicherprotokolls (Schnittstelle) führt zu optimalen Ergebnissen bei der Storage-Performance.