envfx - stock.adobe.com

Das Performance-Problem von NVMe verstehen

NVMe verbessert die Performance von Flash Storage. Doch damit allein ist es nicht getan, wenn das Storage-Ökosystem insgesamt die Performance ausbremst.

NVMe hat den Speichersystemen der Unternehmen eine Menge zu bieten. Die Technologie verbessert die Performance von Flash Storage, indem Command Count und Queue Depth durch den Einsatz von PCIe als primäre Verbindung erhöht werden. Es ist ein Protokoll, das sowohl innerhalb als auch außerhalb eines Servers eingesetzt wird und das in verteilten Speicherumgebungen netzwerktauglich ist.

Die Performance-Verbesserung von NVMe erleben die meisten Unternehmen als eine Reduktion der Latenzen. Diese Latenzreduktion ist so bedeutsam, dass das Protokoll andere Schwächen der Speicherinfrastruktur aufdeckt.

Probleme des Storage-Ökosystems

Speicherarchitekturen enthalten in der Regel Speichermedien, in diesem Fall NVMe-Flash, Storage-Software für den Betrieb des Systems und das Speichernetzwerk, das das System nach außen mit anderen Elementen des Rechenzentrums wie zum Beispiel Servern verbindet. In der Festplatten- und sogar in der SAS-basierten Flash-Ära konnte sich die Performance dieser Komponenten hinter der Latenz der Speichermedien verstecken. Mit NVMe-Flash dagegen ist die Latenz der Medien fast ausgelöscht, und der durch diese Komponenten erzeugte Ressourcen-Mehrverbrauch ist jetzt offengelegt.

Eine einfache Methode, diese Latenzlücke zu verifizieren, besteht in der Prüfung der ursprünglichen Performance eines NVMe-basierten Flash-Laufwerks. Viele NVMe-Laufwerke beanspruchen mehr als 500.000 IOPS. Doch die meisten Speichersysteme, obwohl sie sogar 24 dieser Laufwerke besitzen, liefern nur zehn Prozent der potentiellen „Raw“-Performance eines einzelnen Laufwerks. Ein typisches Marken-NVMe-Array mit 24 NVMe-Laufwerken zum Beispiel kann das Potential von fast 12 Millionen IOPS haben, doch sobald der Overhead des Storage-Ökosystems eingerechnet wird, liefert es oft nur weniger als eine Million IOPS.

Zwischenlösungen für die Performance-Lücke bei NVMe

Die CPU-Leistungen wachsen weiter, und mit NVMe over Fabrics (NVMe-oF) am Horizont lassen sich die meisten Netzwerkprobleme mit NVMe-basiertem Flash-Speicher lösen. Damit bleibt die Storage-Software als primäre Quelle von Performance-Beeinträchtigungen beim Einsatz von NVNe bestehen.

Die Hersteller verwenden eine Reihe von Zwischenlösungen, um das Softwareproblem in den Griff zu bekommen, das zwischen NVMe-Flash und der Speichersoftware existiert. Die am häufigsten eingesetzte Lösung besteht darin, die neuesten und leistungsstärksten Prozessoren im Storage-System einzusetzen, so dass die Storage-Software in der Lage ist, I/O-Prozesse und Managementaufgaben schneller durchzuführen. Aber es ist problematisch, dass Hersteller wie Intel die Prozessorleistung weiter durch Erhöhung der Anzahl der Cores steigern und nicht durch die Leistung per Core. Wenn die Storage-Software nicht Multithread-fähig ist, gibt es auch kaum Vorteile, leistungsstarke Prozessoren einzusetzen.

NVMe ist sehr viel leistungsstärker als SATA und liefert deutlich mehr IOPS
Abbildung 1: NVMe ist sehr viel leistungsstärker als SATA und liefert deutlich mehr IOPS.

Eine zweite Zwischenlösung für Hersteller besteht darin, ihre Storage-Software in Field-Programmable Gate Arrays (FPGAs) oder sogar in Hardware zu verlagern. Software in Hardware zu transferieren, ist die entgegengesetzte Strategie zu dem Konzept des softwaredefinierten Rechenzentrums (Software-defined Data Center, SDDC), das gegenwärtig soviel an Popularität gewinnt, aber es könnte die wirksamste Methode für Unternehmen sein, die mit Performance-Problemen bei Storage-I/Os zu kämpfen haben. FPGA stellt Storage-Software mit dedizierter Processing-Leistung zur Verfügung, die nicht Core-basiert ist.

Eine dritte Zwischenlösung sieht vor, die Rolle der Speichersoftware zu begrenzen und die Anzahl ihrer Features zu reduzieren. Die Überlegung dabei ist, dass die meisten hochperformanten Anwendungen über ähnliche, eingebaute Fähigkeiten verfügen und sie so auch einen Teil der Performance-Last von Storage-Management übernehmen könnten. Die Performance-Problematik wäre dann besser verteilt. Doch nicht alle Anwendungen unterstützen die fortgeschrittenen Storage-Features, die von Unternehmen verlangt werden. Außerdem führt jede Anwendung diese Features in einer anderen Art und Weise aus, so dass die mangelnde Standardisierung zu einer größeren Komplexität beim Storage Management führt.

Das Performance-Problem von NVMe-Storage lösen

Der Prozess, die Performance des Storage-Ökosystems in den Griff zu bekommen, so dass es die NVMe-Performance einholt, braucht viel Zeit. Storage-Entwickler müssen ihre Storage-Software neu schreiben, eventuell sogar von Grund auf, um wirklich parallel zu funktionieren.

Die meisten Hersteller nehmen heute für sich ein gewisses Niveau von Multithreading für ihre Produkte in Anspruch, aber der Grund dafür liegt in vielen Fällen nur darin, weil sie bestimmte Aufgaben für spezielle Cores vorsehen, was nicht der wirkungsvollste Einsatz von verfügbarer CPU-Leistung ist. Stattdessen sollten die Hersteller I/O-Funktionen über die Cores verteilen, so dass alle Cores zur gleichen Zeit auf die gleiche Weise benutzt werden.

Mit NVMe-Flash ist die Latenz der Medien fast ausgelöscht, und der durch diese Komponenten erzeugte Ressourcen-Mehrverbrauch ist jetzt offengelegt.

Der zweite Schritt, der eventuell sogar noch mehr Zeit in Anspruch nimmt, besteht darin, viele der grundsätzlichen Storage-Algorithmen, die sich seit Jahrzehnten nicht geändert haben, zu überprüfen und neu zu schreiben. Die Hersteller müssen überlegen, Schlüsselfunktionen wie zum Beispiel RAID, Tracking von Metadaten für Snapshots, Deduplizierung, Replikation und Thin Provisioning neu zu schreiben, damit sie für die hohe Anzahl von Cores bei den heutigen Prozessoren und die sehr niedrige Latenz von aktuellen Speichermedien optimiert sind.

Was ist jetzt zu tun?

Mit der Ausnahme von Workloads für AI und Machine Learning haben die meisten Unternehmen nicht die Applikations-Power, um die volle Performance von NVMe-basierten Systemen oder Netzwerken zu erreichen. Oder Unternehmen versuchen, die Anzahl der virtuellen Maschinen pro physischem Server zu erhöhen. Wenn die VM-Ratio pro Server weiter ansteigt, wird die I/O-Last erheblich. NVMe-Storage und NVMe over Fabrics Networking liefern die I/O-Fähigkeiten, um die Performance-Herausforderung dieser sehr dichten Ratio von VM zu physischem Server zu meistern. Wenn Hersteller das Storage-Softwareproblem in den Griff bekommen, werden Dichten von Hunderten von VMs pro physischem Server möglich.

Die meisten auf den Markt kommenden NVMe-Systeme versuchen, die Performance durch den Einsatz von Prozessoren hochzutreiben. Einige Unternehmen zahlen einen Extrapreis für diesen Ansatz, aber es sollte ihnen solange helfen, bis die Software mit der Hardware mithalten kann. Andere finden es eher in ihrem Interesse, mit SAS-basierten All-Flash Arrays weiterzumachen, da diese höchstwahrscheinlich einige Performance-Anforderungen erfüllen und gleichzeitig billiger sind.

Schließlich sollten Unternehmen Ausschau nach zukünftigen Angeboten für Storage-Software halten, die hoch parallelisiert sind und bei denen die Storage-Algorithmen optimiert wurden. Diese sollten in der Lage sein, die benötigte Performance mit deutlich weniger NVMe-Laufwerken zu liefern. 

Nächste Schritte

Das sollten Sie über NVMe over Fabrics wissen

Warum künstliche Intelligenz-Anwendungen und NVMe eine gute Kombination sind

NVMe-Performance kann nur mit der richtigen Architektur optimal genutzt werden

Erfahren Sie mehr über Flash Storage und SSD

ComputerWeekly.de
Close