Andrea Danti - Fotolia
NVMe-Leistung kann zum CPU-Engpass werden
NVMe-Systeme bringen keine Performance-Vorteile, wenn zusätzliche Hardware und Speichersoftware mehr CPU-Ressourcen verbraucht. Erfahren Sie, wie Sie dieses Problem lösen können.
NVMe-Flash-SSDs können die Leistungsprobleme zwischen der Server- oder Storage-Controller-CPU und angeschlossenen Flash-SSDs reduzieren, wodurch die Latenzzeit verringert und die Performance im Vergleich zu SAS- und SATA-SSDs verbessert wurde. NVMe-oF sorgt dafür, dass lokale und embedded NVMe-Latenzen und -Performance von Shared Storage in DAS- oder SAN-Speicher genutzt werden kann.
Dies sind wichtige Speicher-Performance-Technologien. Doch so entscheidend sie auch sind, sie haben eine weitere Schwachstelle für die NVMe-Leistung offenbart: das CPU-Limit (genannt Chokepoint, Überlastungspunkt) im Server oder im Speicher-Controller.
Der CPU-Chokepoint
Das Moore'sche Gesetz hat sich verlangsamt, und es stellt sich heraus, dass es Grenzen für die Verdopplung der Transistoren alle 18 bis 24 Monate gibt. Die neuesten Intel x86-Prozessoren verfügen über bis zu 48 PCIe Lanes, die bis zu 24 NVMe Flash-SSDs unterstützen. Die neuesten AMD x86 Plug-kompatiblen Prozessoren verfügen über bis zu 128 PCIe Lanes, die bis zu 32 NVMe Flash-SSDs unterstützen.
Werden mehr NVMe Flash-SSDs benötigt, wird die unterstützende Hardware immer komplizierter. Es bedeutet in der Regel mehr CPUs, entweder interne oder externe. Der Speicher kann DAS sein oder über NVMe-oF verteilt genutzt werden. So oder so, es werden mehr CPUs, Laufwerke, Geräteeinschübe, Schalter, Adapter, Transceiver und Kabel benötigt.
Der allgemeine Branchenkonsens ist, dass die Skalierung von Kapazität und Leistung mit NVMe-Laufwerken und NVMe-oF nur zusätzliche Hardware erfordert. Es gibt einige clevere Systeme mit mehreren CPUs, einer großen Anzahl von NVMe-Laufwerken, NVMe-oF-Interconnect und Hochleistungsspeicher auf kleinstem Raum. Pavilion Data Systems und Vexata gehören zu den Anbietern, die diese offerieren.
Aber hier ist ein entscheidender Punkt zu beobachten. Diese Systeme bieten durchaus spürbar sinkende Vorteile. Die Hardware wächst viel schneller als die Performance. Dies geschieht unabhängig davon, wie viele CPUs oder NVMe Flash-SSDs hinzugefügt werden. Schließlich bedeutet mehr Hardware eine negative Ausbeute der Gesamtleistung.
Die Hauptursache für diese NVMe-Leistungsproblematik ist nicht die Hardware. Es ist eine Speichersoftware, die nicht auf CPU-Effizienz ausgelegt ist. Warum sich mit der Effizienz beschäftigen, wenn sich die CPU-Leistung alle 18 bis 24 Monate verdoppelt? Funktionen wie Deduplizierung, Komprimierung, Snapshots, Klone, Replizierung, Tiering und Fehlererkennung und -korrektur wurden der Storage-Software kontinuierlich hinzugefügt. Und viele dieser Funktionen waren CPU-intensiv. Wenn Speichersoftware CPU-Ressourcen verbraucht, stehen sie den Hochleistungslaufwerken nicht für die Speicher-I/Os zur Verfügung.
Verfügbare Lösungen für die NVMe Performance-Herausforderung
Einige glauben, dass Storage Class Memory (SCM), die nächste Generation des nichtflüchtigen Speichers, diese Herausforderung der NVMe-Leistung lösen wird. Wird es wahrscheinlich nicht. SCM-Technologien werden sie nur noch verschärfen, da ihre Leistungssteigerung die CPU noch stärker belastet.
Obwohl dies zu einem schwierigen Problem bei der Skalierung der Speicherleistung geworden ist, gibt es mehrere Möglichkeiten, wie sie adressiert werden kann, einschließlich der folgenden Optionen:
- Mehr CPUs – Server oder Speichercontroller –, die verbunden sind. Dies ist der häufigste Ansatz, aber er ist mit hohen Kosten und geringen Auslastungsvorteilen verbunden.
- Verwendung von Dynamic RAM (DRAM) Caching vor den NVMe-Flash-SSDs. DRAM ist bis zu 1.000 mal schneller und mit niedrigeren Latenzen als die schnellsten NVMe-Flash-SSDs. Allerdings hat es erhebliche Kapazitätsbeschränkungen – typischerweise drei TByte oder weniger – pro Server oder Speicher-Controller. DRAM ist zudem teuer und volatil und erfordert ein Power-Backup zum Schutz der zwischengespeicherten Daten. Da SCM-Technologien beginnen, DRAM zu ersetzen, werden die Kosten für das DRAM-Caching sinken und die Hardware wird weniger komplex werden. Das größte Problem beim Caching ist die Skalierung. Cache-Kohärenz ist notwendig, um Anwendungsfehler zu vermeiden, aber Cache-Kohärenz-Algorithmen sind kompliziert. Die Komplexität steigt mit der Anzahl der Serverknoten oder Speicher-Controller.
- Computational Storage von Burlywood, NGD Systems, Pliops, ScaleFlux und anderen nutzen. Computational Storage setzt einen oder mehrere Prozessoren und RAM auf das NVMe-Flashlaufwerk. Diese Laufwerke reduzieren die Datenbewegung und die Latenzzeit. Sie ermöglichen eine kooperative Verarbeitung zwischen den Haupt-CPUs und denjenigen auf den Flash-Laufwerken und beseitigen die PCIe-Lane-Einschränkungen. Diese Laufwerke kosten mehr als Standardlaufwerke und werden meist von Startups bereitgestellt, aber das wird sich ändern.
- Speichersoftware effizient machen. Storage-Software in den letzten drei Jahrzehnten musste nicht effizient sein. Es gab viele Server- und Controller-Ressourcen, um die Software zu verwalten, ohne die Lese-/Schreibleistung zu beeinträchtigen. Die Festplatte war der Leistungsengpass. Flash-Laufwerke, und jetzt NVMe, haben den CPU-Engpass offengelegt. Die Anpassung von Speichersoftware erfordert eine vollständige neue Version, um effizienter zu sein und weniger Server- oder Speicher-Controller-Ressourcen zu verbrauchen. Mit anderen Worten, erhalten Sie mehr Speicherfunktionalität mit weniger Server- oder Controller-Hardware-Ressourcen. StorOne war das erste Unternehmen, das diesen Ansatz gewählt hat, aber andere arbeiten daran.
Einige dieser Ansätze für diese NVMe-Herausforderung sind kostengünstig, andere nicht. Andere sind einfacher zu implementieren. Alle haben Vor- und Nachteile und Risiken, und es gibt keine einheitliche Größe für alle. Das ist ein schwer zu lösendes Problem, aber es ist lösbar.