Erhöhung der Datenverarbeitungs- und Übertragungsgeschwindigkeit für NVMe-Speichergeräte
Projekt in Kürze: Wir haben die Leistung des Speichersystems unseres Kunden um 30 % verbessert, indem wir DPDK-Bibliotheken mit dem ZFS-Dateisystem auf NVMe-Laufwerken verbunden haben. Diese Leistungssteigerung kann einen wichtigen Wettbewerbsvorteil für den Speichermarkt bieten. Diese Fallstudie beschreibt den ingenieurtechnischen Aspekt dieses Vorteils.
Kunde & Herausforderung
In Zusammenarbeit mit einem Anbieter von NVMe-basierten Speichern haben wir uns darauf konzentriert, bewährte Methoden zur Entwicklung von NAS-Systemen zu finden, die die Leistung und die Datenübertragungsraten verbessern können.
Lösung
1. Entwicklung des Konzepts
Um die Geschwindigkeit der Datenverarbeitung und -aufzeichnung zu bewerten, testeten wir NVMe-Laufwerke, die in einem RAID-Array mit ZFS (Zettabyte File System) kombiniert waren. ZFS ermöglicht bereits eine mehrfache Steigerung der Datenaufzeichnungsgeschwindigkeit. Wir planten zudem Tests mit dem DPDK-Bibliothekensatz, um die Möglichkeit einer weiteren Leistungssteigerung zu bewerten.
2. Beschreibung der Hardware-Plattform
Folgende Komponenten bildeten die Hardware-Plattform für unsere Tests:
- 4 NVMe-Laufwerke mit hoher Kapazität von Samsung, Modell MZQL27T6HBLA-00A07.
- Eine Platine zur Verbindung der vier NVMe-Laufwerke.
- PC-Systemmodell: Ampere Altra Developer Platform.
- PC-RAM: 6x32 (192GiB) DIMM DDR4 2933 MHz.
- PC-CPU: ARMv8 von ARM (Q64-22).
- PC-Motherboard: COM-HPC Ampere Altra Module.
3. Beschreibung der Software-Plattform
Wir verwendeten die folgenden Softwarekomponenten für die Tests:
- Betriebssystem Ubuntu Server Version 22.04.4 LTS mit ARM 64 Architektur.
- Zpool-Utility zur Erstellung, Konfiguration und Optimierung eines ZFS-RAID-Arrays.
- TestBench-Software zur Leistungsbewertung. Diese Software simuliert Datenübertragungsoperationen mit 16 Gbps pro Dateneinheit und misst die Kopiergeschwindigkeiten.
- DPDK 23.07 Bibliothekensatz zur Verbesserung der Leistung während der Tests.
4. Beschreibung der Testmethodik
Wir führten die NVMe-Tests mit vier Konfigurationseinstellungen durch:
- Benchmarking der Standardeinstellungen des ZFS-Pools. Diese Konfiguration dient als Basistest zur Messung der Leistung des ZFS-Pools mit seinen Standardeinstellungen. Dazu gehört das Aktivieren der LZ4-Komprimierung, die helfen kann, Speicherplatz durch Datenkomprimierung zu sparen.
- Benchmarking des ZFS-Pools mit empfohlenen Einstellungen für NVMe-Laufwerke. Diese Konfiguration optimiert den ZFS-Pool für NVMe, indem die physische Blockgröße auf 4K-Sektoren eingestellt und die Aufzeichnungsgröße auf 1 Megabyte für effiziente sequentielle Ein-/Ausgabe-Operationen angepasst wird.
- Benchmarking des ZFS-Pools mit spezifischen Optimierungsoptionen und „Direct IO“. Diese Konfiguration konzentriert sich auf die Feinabstimmung des ZFS-Pools für maximale Leistung. Kompression und Deduplizierung werden deaktiviert, um die Verarbeitungsbelastung zu verringern, und weitere Optimierungen wie das Deaktivieren von Zugriffszeitaktualisierungen (atime) und das Optimieren des Extended Attribute Storage (xattr=sa) werden vorgenommen.
- Benchmarking mehrerer ZFS-Pools, die jeweils aus einem NVMe-Laufwerk bestehen. Hierbei wird für jedes NVMe-Laufwerk ein separater ZFS-Pool erstellt, um die Leistung einzelner Laufwerke und Pools zu bewerten. Die Tuning-Optionen und „Direct IO“-Einstellungen aus Konfiguration 3 werden auf jeden Pool angewendet.
Die Tests wurden wie folgt durchgeführt:
- Das System wurde gemäß den Konfigurationseinstellungen eingerichtet.
- Wir generierten einen Datenstrom mit dem TestBench-Programm und maßen die Schreibgeschwindigkeit auf RAID.
- Wir führten die gleichen Tests erneut durch, jedoch mit der zusätzlichen Lz4-Datenkomprimierungsoption für zpool.
Wir wiederholten die Tests jeder Konfiguration dreimal mit 4, 8 und 16 Datenverarbeitungs-Threads. Die Ergebnisse sind in der Tabelle unten aufgeführt, einschließlich der Datenübertragungsgeschwindigkeit mit der zusätzlichen Komprimierungsoption:
Konfiguration Nr. | 4 Threads (1x16GB pro Thread), Mbps | 8 Threads (1x16GB pro Thread), Mbps | 16 Threads (1x16GB pro Thread), Mbps |
Konfiguration 1 | 5293 | 7589 | 8511 |
5274 | 7790 | 8797 | |
Konfiguration 2 | 5175 | 7494 | 8963 |
5353 | 7560 | 8874 | |
Konfiguration 3 | 5579 | 7920 | 9556 |
5403 | 7691 | 9069 | |
Konfiguration 4 | 5476 | 8272 | 9785 |
5161 | 7655 | 9098 |
5. Ergebnisse
Die Ergebnisse ermöglichen folgende Schlussfolgerungen:
- Die Schreibgeschwindigkeit steigt mit der Anzahl der Threads: Wenn mehr Spuren zur gleichzeitigen Datenverarbeitung verwendet werden, kann das System Daten schneller in den ZFS-Pool schreiben. Die Systemleistung hängt von der Parallelität der Datenverarbeitung ab.
- Die optimale Leistung wird erzielt, indem vier NVMe-Geräte an das System angeschlossen und als vier separate ZFS-Pools konfiguriert werden. Diese Konfiguration verbessert die Fähigkeit des Systems, die Datenverarbeitung auf mehreren Festplatten zu parallelisieren, und verbessert die Schreibgeschwindigkeit im Vergleich zu anderen Konfigurationen.
- Die Datenkompression mit dem Lz4-Algorithmus kann situativ die Schreibgeschwindigkeit erhöhen oder geringfügig verringern. Der Einfluss auf die Schreibgeschwindigkeit kann von der Art der zu komprimierenden Daten und der Gesamtbelastung des Systems abhängen.
Geschäftswert
Wir haben unserem Kunden geholfen, ein Speichersystem zu entwickeln, das die Leistung um 30 % gegenüber ähnlichen Produkten auf dem Markt verbessert hat.
Mit dem aufgerüsteten NAS-System wird unser Kunde seine Marktreichweite erweitern und mehr Kunden aus verschiedenen Branchen anziehen können, in denen hohe Schreib- und Lesegeschwindigkeiten von Speichersystemen entscheidend sind:
- Finanzwesen und E-Commerce, wo Leistungssteigerungen und Datenverarbeitungsgeschwindigkeiten effizientere Transaktionsverarbeitung, verbesserte Datenanalysen und Compliance ermöglichen;
- Cloud-Service-Anbieter, bei denen eine effiziente Speicherinfrastruktur leistungsstarke Rechenressourcen bietet, die Datensicherheit verbessert und Dienste skaliert werden, um den wachsenden Kundenbedürfnissen gerecht zu werden;
- Streaming-Medien, bei denen eine optimierte Speicherinfrastruktur die Latenz verringert und einen reibungslosen Streaming-Betrieb gewährleistet.
Weitere Leistungen zur Leistungssteigerung
- SPDK und DPDK-Lösungen: Erfahren Sie mehr über unsere Expertise im Design von Hochgeschwindigkeits-Datenübertragungslösungen – bis zu 10-mal schneller als der Linux-Kernel-Netzwerkstack.
- Enterprise NAS: Eine Fallstudie über die Entwicklung eines Enterprise-Network-Attached-Storage-Systems mit DPDK/SPDK-Unterstützung.
TCP PEP und QoS-Softwaremodule: Erfahren Sie, wie wir Software entwickelt haben, um die Leistung von Kommunikationssystemen über geostationäre Satelliten zu verbessern.