pressmaster - stock.adobe.com
NVMe-Geschwindigkeiten im Vergleich zu SAS und SATA
Das NVMe-Protokoll ist maßgeschneidert, um SSDs schnell zu machen. Informieren Sie sich über die NVMe-Leistung und wie sie im Vergleich zu SATA- und SAS-Schnittstellen abschneidet.
Das NVMe-Protokoll hat sich zum Industriestandard für die Unterstützung von Solid-State Drives (SSDs) und anderen nichtflüchtigen Memory-Subsystemen entwickelt. Die NVMe-Geschwindigkeiten sind wesentlich höher als die von herkömmlichen Speicherprotokollen wie SAS und SATA.
Der Standard für Non-volatile Memory Express basiert auf der NVM-Express-Basisspezifikation, die von NVM Express veröffentlicht wurde, einem gemeinnützigen Konsortium von führenden Unternehmen der Technologiebranche. Das Konsortium unterhält eine Reihe von Spezifikationen, die definieren, wie Host-Software mit nichtflüchtigem Speicherüber unterstützte Transporte kommuniziert. Ab NVMe 2.0 umfasst der Satz die folgenden Spezifikationen:
- NVMe-Basisspezifikation (Base Specification)
- NVMe Command Set Specifications (NVM Command Set, Zoned Namespaces Command Set und Key Value Command Set)
- NVMe Transport Specifications (NVMe over PCIe Transport, RDMA Transport und TCP Transport)
- NVMe Management Interface Specification
Die NVM Express-Basisspezifikation definiert sowohl ein Speicherprotokoll als auch eine Host-Controller-Schnittstelle, die für Client- und Unternehmenssysteme optimiert ist, die SSDs auf der Basis von PCIe verwenden. PCIe ist ein serieller Erweiterungsbusstandard, der es Computern ermöglicht, Peripheriegeräte anzuschließen.
Ein PCIe-Bus kann geringere Latenz und höhere Übertragungsgeschwindigkeiten als ältere Bustechnologien, wie die Standards PCI oder PCI Extended (PCI-X), bieten. Bei PCIe hat jeder Bus seine eigene dedizierte Verbindung, so dass sie nicht um die Bandbreite konkurrieren müssen.
Erweiterungssteckplätze, die den PCIe-Standard einhalten, können von einer bis zu 32 Datenübertragungsspuren (Data Transmission Lanes) skalieren. Der Standard definiert sieben physische Lane-Konfigurationen: x1, x2, x4, x8, x12, x16 und x32. Die Konfigurationen basieren auf der Anzahl der Lanes; eine x8-Konfiguration verwendet zum Beispiel acht Lanes. Je mehr Lanes vorhanden sind, desto besser ist die Leistung - und desto höher sind die Kosten.
Die PCIe-Version ist ein weiterer Faktor, der die Leistung beeinflusst. Im Allgemeinen verdoppelt jede Version die Bandbreite und die Übertragungsrate der vorherigen Version, das heißt je aktueller die Version, desto besser die Leistung. PCIe 3.0 bietet beispielsweise eine Bandbreite von 1 GB/s pro Lane; PCIe 4.0 verdoppelt diese Bandbreite auf 2 GB/s; und PCIe 5.0 verdoppelt die Bandbreite nochmals auf 4 GB/s.
Was ist eine SSD?
Ein Solid-State Drive ist eine Art nichtflüchtiges Speichergerät für die Speicherung elektronischer Daten. Im Gegensatz zu einem Festplattenlaufwerk oder einem Magnetband enthält ein SSD keine beweglichen Teile, die brechen oder ausfallen können. Stattdessen verwendet eine SSD Silizium-Mikrochips zum Speichern von Daten, so dass es weniger Strom benötigt und weniger Wärme erzeugt.
Die meisten der heutigen SSDs basieren auf der Flash-Speichertechnologie. Jedes Gerät enthält einen Flash-Controller und einen oder mehrere NAND-Flash-Speicherchips.
NVMe-Geschwindigkeiten und Leistung
NVMe wurde von Grund auf speziell für SSDs entwickelt, um den Durchsatz und die IOPS zu verbessern, die Latenzzeitzu verringern und die Geschwindigkeit zu erhöhen. NVMe-basierte Laufwerke können theoretisch einen Durchsatz von bis zu 32 GB/s erreichen, vorausgesetzt, die Laufwerke basieren auf PCIe 4.0 und nutzen 16 PCIe-Lanes. Heutige PCIe-4.0-SSDs sind in der Regel Vier-Lane-Geräte mit einem Durchsatz von etwa 7 GB/s. Obwohl einige Laufwerke nur 200.000 IOPS erreichen, kommen viele auf weit über 500.000 IOPS, einige sogar auf 10 Millionen. Gleichzeitig sinken die Latenzraten weiter; viele Laufwerke erreichen Raten von unter 20 Mikrosekunden (µs), einige sogar unter 10.
Dennoch können die Kennzahlen zur Messung von NVMe-SSD-Geschwindigkeiten, wie Durchsatz oder Übertragungsrate, stark variieren. Bei diesen Zahlen handelt es sich eher um Trends als um absolute Werte, da es sich um eine dynamische Technologie handelt. Faktoren wie die Art der Arbeitslast - Schreiben vs. Lesen oder zufällige vs. sequentielle Datenübertragung - können einen erheblichen Unterschied bei den maximalen NVMe-Geschwindigkeiten ausmachen. Dennoch ist klar, dass NVMe Protokolle wie SAS und SATA in jeder Hinsicht deutlich übertrifft, insbesondere bei Verwendung von PCIe 4.0.
NVMe verwendet einen schlankeren Befehlssatz für die Verarbeitung von I/O-Anforderungen, der weniger als die Hälfte der CPU-Befehle benötigt als die von SATA oder SAS generierten Befehle. NVMe verfügt auch über ein umfangreicheres und effizienteres System für die Warteschlangenbildung (Queuing Messages). SATA und SAS unterstützen beispielsweise jeweils nur eine I/O-Warteschlange (Queue) zur gleichen Zeit. Die SATA-Warteschlange kann bis zu 32 ausstehende Befehle enthalten, die SAS-Warteschlange kann bis zu 256 enthalten. NVMe kann bis zu 65.535 Warteschlangen und bis zu 64.000 Befehle pro Warteschlange unterstützen.
Mit diesem Warteschlangenmechanismus kann NVMe die parallelen Verarbeitungsfähigkeiten einer SSD besser nutzen, was bei anderen Protokollen nicht möglich ist. Darüber hinaus nutzt NVMe Remote Direct Memory Access (RDMA) über den PCIe-Bus, um I/O-Befehle und -Antworten direkt dem gemeinsamen Memory des Hosts zuzuordnen. Dadurch wird der CPU-Overhead noch weiter reduziert und die NVMe-Geschwindigkeit erhöht. Infolgedessen kann jeder CPU-Befehlszyklus höhere IOPS unterstützen und die Latenzzeiten im Host-Software-Stack reduzieren.
Geschwindigkeiten und Leistung von SAS und SATA
SAS und SATA sind gemeinsame Protokolle zur Erleichterung der Konnektivität zwischen Host-Software und peripheren Laufwerken. Das SATA-Protokoll basiert auf dem Advanced Technology Attachment-Standard (ATA, auch IDE), das SAS-Protokoll auf dem SCSI-Standard.
Die SATA- und SAS-Protokolle wurden speziell für Festplattengeräte entwickelt. Obwohl SAS im Allgemeinen als schneller und zuverlässiger gilt, können beide Protokolle problemlos mit HDD-Workloads umgehen. Wenn ein System auf speicherbezogene Hindernisse stößt, liegt das oft am Laufwerk selbst oder an anderen Faktoren, nicht am Protokoll.
SSDs haben diese Gleichung geändert. Ihre höheren IOPS können die älteren Protokolle schnell überfordern, so dass sie an ihre Grenzen stoßen, bevor sie die Leistungsfähigkeiten des Laufwerks voll ausschöpfen können.
Die älteren Protokolle funktionieren auf SSDs nicht annähernd so gut. SATA und SAS unterstützen jeweils nur eine I/O-Warteschlange, und diese Warteschlangen können im Vergleich zu NVMe nur eine geringe Anzahl von ausstehenden Befehlen enthalten.
Darüber hinaus können die heutigen SATA-basierten Laufwerke einen Durchsatz von nur 6 Gbit/s erreichen, wobei die IOPS-Spitze bei etwa 100.000 liegt. Die Latenzzeiten betragen in der Regel mehr als 100 µs, obwohl einige neuere SATA-basierte SSDs deutlich niedrigere Latenzzeiten erreichen können. SAS-Laufwerke sind etwas leistungsfähiger: sie bieten einen Durchsatz von bis zu 12 Gbit/s und eine IOPS-Leistung von durchschnittlich 200.000 bis 400.000. Dennoch sind niedrigere IOPS nicht ungewöhnlich. In einigen Fällen sind die SAS-Latenzzeiten auf unter 100 µs gesunken, aber nicht viel.
NVMe 2.0
Die NVMe-2.0-Spezifikationen definieren eine Reihe neuer und verbesserter Funktionen, um die aufkommende NVMe-Geräteumgebung zu unterstützen und gleichzeitig die Kompatibilität mit früheren Versionen zu wahren. Die 2.0-Spezifikationen enthalten Funktions- und Verwaltungsaktualisierungen, die es ermöglichen, NVMe mit rotierenden Medien wie Festplatten zu verwenden.
NVMe 2.0, das im Jahr 2021 veröffentlicht wurde, fügte zwei Befehlssatzspezifikationen hinzu. Das Zoned NamespacesCommand Set definiert eine Speichergeräteschnittstelle, die es einem Host und einer SSD ermöglicht, bei der Datenplatzierung zusammenzuarbeiten. Dies hilft dabei, die Daten auf die physischen Medien des SSD abzustimmen, was die Leistung und Ressourcennutzung verbessert. Das Key Value Command Set ermöglicht Anwendungen die Verwendung von Key-Value-Paaren zur direkten Kommunikation mit einer SSD, wodurch der Overhead von Übersetzungstabellen zwischen Schlüsseln und logischen Blöcken vermieden wird.
Mit NVMe 2.0 wurden mehrere weitere wichtige Funktionen hinzugefügt und viele bestehende aktualisiert. Zum Beispiel:
- Namespace Types ermöglicht es einem SSD-Controller, verschiedene NVMe-Befehlssätze zu unterstützen.
- NVMe Endurance Group Management verbessert die SSD-Kontrolle, indem es die Konfiguration von Medien in Endurance-Gruppen und NVM-Sets ermöglicht, was die Granularität des Zugriffs auf die SSD offenlegt.
- Multiple Controller Firmware Update definiert das Verhalten für die Aktualisierung der Firmware in einer Domäne mit mehreren Controllern.
- Command Group Control schützt ein System vor unbeabsichtigten oder böswilligen Änderungen, nachdem es bereitgestellt worden ist.
- Command and Feature Lockdown ermöglicht Host- und Managementkontrollen, um die Ausführung bestimmter Befehle zu verhindern.
- Mit einem einfachen Kopierbefehl kann ein Host Daten aus mehreren logischen Blockbereichen in einen einzigen aufeinanderfolgenden logischen Blockbereich kopieren.
Die NVMe-2.0-Spezifikationen verbessern auch die Telemetrie, enthalten Funktionen, die große Umgebungen mit verschiedenen Domänen ermöglichen, definieren eine neue Identitätsstruktur, die mehrere Namensräume umfassen kann, und aktualisieren das Command Effects Log.
NVMe 1.3 und NVMe 1.4
Im Jahr 2019 veröffentlichte die NVM Express-Gruppe die NVMe 1.4-Spezifikation. Sie baut auf NVMe 1.3, das 2017 veröffentlicht wurde, auf und verbessert es. Mit NVMe 1.4 wurden mehrere neue und verbesserte Funktionen eingeführt. Beispielsweise wurde in der überarbeiteten Spezifikation ein PCIe-Persitent-Memory-Bereich definiert, deren Inhalt über Stromzyklen hinweg bestehen bleibt. Es wurde ein Modus mit vorhersagbarer Latenz definiert, der es einem gut geführten Host ermöglicht, eine deterministische Leselatenz zu erreichen.
NVMe 1.4 ermöglichte auch die Implementierung eines persistenten Ereignisprotokolls (Event Log) in NVMe-Subsystemen, die Meldung asymmetrischer Namespace-Zugriffsmerkmale an den Host und die Möglichkeit für den Host, ein NVM-Set und eine I/O-Warteschlange zuzuordnen. Die Revision fügte einen Verifizierungsbefehl hinzu, um die Integrität der gespeicherten Daten und Metadaten zu überprüfen. Es wurden Hinweise zur Leistung und Ausdauer definiert, die es dem Controller ermöglichen, bevorzugte Granularitäten und Ausrichtungen für Schreib- und Freigabevorgänge anzugeben.
Mit NVMe 1.4 wurden viele bestehende Funktionen aktualisiert. Sie verbesserte den Host-Memory-Puffer und ermöglichte die gemeinsame Nutzung von Schreibströmen durch mehrere Hosts. Die Spezifikation definierte auch einen Controller-Mechanismus für die Übermittlung von Namespace-Zuweisungsgranularitäten an den Host und ermöglichte es, die Freigabe nach einem Sanitize-Vorgang zu verhindern.
NVMe over Fabrics (NVMe-oF)
Im Juni 2016 veröffentlichte das NVM Express-Konsortium die NVMe-oF-Spezifikation (NVMe over Fabrics), die die Vorteile von NVMe auf Netzwerk-Fabrics wie Ethernet, InfiniBand und Fibre Channel ausweitet. Das Konsortium schätzt, dass die NVMe-oF-Spezifikation zu 90 Prozent mit der NVMe-Spezifikation identisch ist. Der Hauptunterschied zwischen den beiden ist die Art und Weise, wie die Protokolle Befehle und Antworten zwischen dem Host und dem NVM-Subsystem verarbeiten.
Im Oktober 2019 veröffentlichte NVM Express die Spezifikation NVMe-oF 1.1, die die Unterstützung für die TCP-Transportbindung hinzufügte. NVMe over TCP ermöglichte die Nutzung von NVMe-oF in Standard-Ethernet-Netzwerken ohne Hardware- oder Konfigurationsänderungen. Das Konsortium hat derzeit keine Pläne für eine weitere NVMe-oF-Entwicklung. Der Inhalt wurde stattdessen in die Version 2.0 der NVM Express Base-Spezifikation aufgenommen.
Überlegungen zum Kauf
Eine der wichtigsten Überlegungen beim Kauf von SSDs ist die Frage, ob man Laufwerke auf der Grundlage des SATA-, SAS- oder NVMe-Protokolls auswählen soll. Die meisten Unternehmensrechenzentren bevorzugen NVMe gegenüber den beiden anderen Protokollen aufgrund seiner überlegenen Leistung.
Wenn sich die Entscheidungsträger für NVMe entscheiden, sollten sie vier wichtige Faktoren berücksichtigen, die speziell für PCIe gelten:
- PCIe-Version. Jede neue Generation der PCIe-Spezifikation bringt eine höhere Leistung mit sich, daher sollten Unternehmen versuchen, sich für SSDs zu entscheiden, die der neuesten Version entsprechen.
- Anzahl der PCIe-Lanes. Die meisten NVMe-SSDs sind auf vier PCIe-Lanes beschränkt, aber nicht alle. Je mehr Lanes ein Laufwerk verwendet, desto besser ist die Gesamtleistung.
- SSD-Formfaktor. PCIe-SSDs gibt es in vier Formfaktoren: M.2, U.2, Add-in-Karten und EDSFF. Entscheidungsträger sollten Faktoren wie das Budget, den Standort der Laufwerke im Host und den verfügbaren Platz berücksichtigen. EDSFF ist eine aufstrebende Technologie, die in Bezug auf Leistung, Kapazität und Skalierbarkeit mehrere Vorteile gegenüber anderen Formfaktoren bietet.
- Die Hardware, in der die SSDs untergebracht sind, sollte die gleiche PCIe-Version wie die Laufwerke unterstützen, um die größten Vorteile zu erzielen. Wenn Benutzer beispielsweise ein PCIe-4.0-SSD auf einem PCIe-3.0-Server betreiben, läuft das Laufwerk mit PCIe-3.0-Geschwindigkeit, nicht mit PCIe-4.0.