Testen von Software-RAID-Arrays für NVMe-Geräte mithilfe der SNIA-Methode



Vor einigen Monaten haben die Mitarbeiter unseres Forschungslabors bei der Arbeit am nächsten Projekt NVMe-Festplatten und Softwarelösungen untersucht, um die beste Option für die Zusammenstellung eines Software-Arrays zu finden.

Die Testergebnisse waren dann überraschend entmutigend - das enorme Geschwindigkeitspotential von NVMe-Festplatten korrelierte überhaupt nicht mit der nachgewiesenen Leistung bestehender Softwareprodukte.

Unseren Entwicklern hat es nicht gefallen. Und sie beschlossen, ihr Produkt zu schreiben ... Ein Produkt, das die Vermarkter später freudig mit dem Namen RAIDIX ERA erfanden.

Heute stellen mehr als ein Dutzend Unternehmen Server her, die für die Verwendung von NVMe-Laufwerken geeignet sind. Der Markt für Produkte, die diese Technologie unterstützen und entwickeln, hat ein enormes Potenzial. Im G2M-Analysebericht werden überzeugende Zahlen präsentiert, die davon überzeugen, dass dieses Datenübertragungsprotokoll in naher Zukunft dominieren wird.


Diagramm aus dem G2M-Bericht

Derzeit ist Intel einer der führenden Hersteller von NVMe-Komponenten. An ihren Geräten haben wir Tests durchgeführt, um die Fähigkeiten bestehender Softwareprodukte zur Verwaltung einer solchen „innovativen“ Hardware zu bewerten.

Zusammen mit unserem Partner Promobit (einem Hersteller von Servern und Datenspeichersystemen unter der Marke BITBLAZE) organisierten wir Tests der Intel NVMe-Laufwerke und der gängigen Software zur Verwaltung solcher Geräte. Die Tests wurden nach der SNIA-Methode durchgeführt.

In diesem Artikel werden wir die Zahlen teilen, die beim Testen des Intel NVMe-Hardwaresystems, der Software-Arrays von MDRAID, Zvol über ZFS RAIDZ2 und in der Tat unserer neuen Entwicklung erhalten wurden.

Hardwarekonfiguration


Als Basis für die Testplattform haben wir das Serversystem Intel Server System R2224WFTZS verwendet. Es verfügt über 2 Sockel für die Installation von skalierbaren Intel Xeon-Prozessoren und 12 Speicherkanäle (insgesamt 24 DIMMs) DDR 4 mit einer Frequenz von bis zu 2666 MHz.

Weitere Informationen zur Serverplattform finden Sie auf der Website des Herstellers .

Alle NVMe-Laufwerke sind über 3 Backplanes F2U8X25S3PHS verbunden .

Insgesamt haben wir 12 NVMe-Laufwerke INTEL SSDPD2MD800G4 mit der Firmware CVEK6256004E1P0BGN im System.

Die Serverplattform war mit zwei Intel® Xeon® Gold 6130-CPU-Prozessoren mit 2,10 GHz und aktiviertem Hyper-Threading ausgestattet, sodass zwei Threads von jedem Kern aus gestartet werden konnten. Somit haben wir am Ausgang 64 Computer-Threads erhalten.

Testvorbereitung


Alle Tests in diesem Artikel wurden gemäß der Spezifikation der SNIA SSS PTSe v 1.1-Methodik durchgeführt. Einschließlich der vorläufigen Vorbereitung der Lagerung wurde durchgeführt, um ein stabiles und ehrliches Ergebnis zu erzielen.

Mit SNIA kann der Benutzer die Parameter für die Anzahl der Threads und die Warteschlangentiefe festlegen. Daher setzen wir 64/32 mit 64 Computer-Threads auf 32 Kernen.

Jeder Test wurde in 16 Runden durchgeführt, um das System auf ein stabiles Indikatorniveau zu bringen und zufällige Werte auszuschließen.

Vor Beginn der Tests haben wir eine vorläufige Vorbereitung des Systems vorgenommen:

  1. Installieren der Kernel-Version 4.11 unter CentOS 7.4.
  2. Schalten Sie C-STATES und P-STATES aus.
  3. Führen Sie das Dienstprogramm optimiert-adm aus und legen Sie das Latenzleistungsprofil fest.

Die Prüfung jedes Produkts und Gegenstands wurde in den folgenden Schritten durchgeführt:

Vorbereitung der Geräte gemäß der SNIA-Spezifikation (abhängig und unabhängig von der Art der Last).

  1. IOps-Test in Blöcken von 4k, 8k, 16k, 32k, 64k, 128k, 1m mit Variationen der Lese- / Schreibkombinationen 0/100, 5/95, 35/65, 50/50, 65/35, 95/5, 100/0 .
  2. Latenztests mit 4k-, 8k-, 16k-Blöcken mit Variationen der Lese- / Schreibkombinationen 0/100, 65/35 und 100/0. Die Anzahl der Threads und die Warteschlangentiefe beträgt 1-1. Die Ergebnisse werden als durchschnittliche und maximale Verzögerung aufgezeichnet.
  3. Throughtput-Test mit 128k- und 1M-Blöcken in 64 Zeilen von 8 Teams.

Wir haben zunächst die Leistung, Latenz und den Durchsatz der Hardwareplattform getestet. Dies ermöglichte es uns, das Potenzial der vorgeschlagenen Ausrüstung zu bewerten und mit den Fähigkeiten der angewandten Softwarelösungen zu vergleichen.

Test 1. Hardwaretests


Zunächst haben wir uns entschlossen zu prüfen, wozu ein Intel DCM D3700 NVMe-Laufwerk in der Lage ist.
In der Spezifikation gibt der Hersteller die folgenden Leistungsparameter an:
Random Read (100% Span) 450.000 IOPS
Random Write (100% Span) 88000 IOPS

Test 1.1 Ein NVMe-Laufwerk. IOPS-Test


Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k84017.891393.8117271.6133059.4175086.8281131.2390969.2
8k42602.645735,858980.267321.4101357.2171316.8216551.4
16k21618.822834.829703.633821.252552.689731.2108347
32k10929.411322147871681126577.647185.250670.8
64k5494.45671.67342.68285.813130.22388427249.2
128k2748.42805.23617.84295.26506.611997.613631
1m351.6354.8451.2684.8830.21574.41702.8

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Zu diesem Zeitpunkt haben wir Ergebnisse erzielt, die die Werksergebnisse nicht ganz erreichen. Höchstwahrscheinlich spielte NUMA (das in Multiprozessorsystemen verwendete Implementierungsschema für den Computerspeicher, wenn die Zugriffszeit auf den Speicher durch seinen Standort relativ zum Prozessor bestimmt wird) seine Rolle, aber wir werden es vorerst nicht beachten.

Test 1.2 Ein NVMe-Laufwerk. Verzögerungstests


Durchschnittliche Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k0,027190,0721340,099402
8k0,0298640,0930920,121582
16k0,0467260,1370160,16405

Durchschnittliche Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Maximale Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k6.98564.71471,5098
8k7.00044.31181,4086
16k7.00684.64451.1064

Maximale Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Test 1.3 Durchsatz


Der letzte Schritt ist die Bewertung des Durchsatzes. Hier sind die folgenden Indikatoren:
1 MB sequentielle Aufzeichnung - 634 MBit / s.
1 MB sequentielles Lesen - 1707 MBit / s.
Sequentielle 128-KB-Aufnahme - 620 MBit / s.
Sequentielles Lesen mit 128 KB - 1704 MBit / s.

Nachdem wir uns mit einem Laufwerk befasst haben, bewerten wir die gesamte Plattform, die aus 12 Laufwerken besteht.

Test 1.4 System in 12 Laufwerken. IOPS-Test


Hier wurde eine willensstarke Entscheidung getroffen, Zeit zu sparen und Ergebnisse nur für die Arbeit mit dem 4k-Block anzuzeigen, der bei weitem das häufigste und indikativste Szenario für die Bewertung der Leistung ist.

Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k1363078.6156234519441052047612217647634413114202364

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Testen Sie das 1.5-System in 12 Laufwerken. Bandbreitentests


1 MB sequentielle Aufzeichnung - 8612 MBit / s.
1 MB sequentielles Lesen - 20481 MBit / s.
Sequentielle 128-KB-Aufzeichnung - 7500 MBit / s.
Sequentielles Lesen mit 128 KB - 20400 MBit / s.

Wir werden uns die erhaltenen Hardware-Leistungsindikatoren am Ende des Artikels noch einmal ansehen und sie mit den Nummern der darauf getesteten Software vergleichen.

Test 2: MDRAID testen


Wenn wir über ein Software-Array sprechen, fällt uns zuerst MDRAID ein. Denken Sie daran, dass dies die Basissoftware RAID für Linux ist, die kostenlos verteilt wird.

Lassen Sie uns sehen, wie MDRAID mit dem vorgeschlagenen 12-Festplatten-System mit einer RAID 0-Array-Ebene umgeht. Wir alle wissen, dass das Erstellen von RAID 0 auf 12 Laufwerken besonderen Mut erfordert, aber jetzt benötigen wir diese Array-Ebene, um die maximalen Funktionen dieser Lösung zu demonstrieren.

Test 2.1 MDRAID. RAID 0. IOPS-Test


Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k10103961049306.61312401.41459698.61932776.82692752.82963943.6
8k513627.8527230.4678140771887.81146340.61894547.82526853.2
16k261087.4263638.8343679.2392655.2613912.81034843.21288299.6
32k131198.6130947.4170846.6216039.4309028.2527920.6644774.6
64k65083.465099.285257.2131005.6154839.8268425322739
128k32550.232718.243378.666999.878935.8136869.8161015.4
1m38023718.43233.43467.235466150.88193.2

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Test 2.2 MDRAID. RAID 0. Verzögerungstests


Durchschnittliche Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k0,030150,0675410,102942
8k0,032810,0821320,126008
16k0,0500580,1142780,170798

Durchschnittliche Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Maximale Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k6.70423,72570,8568
8k6.59182.26010,9004
16k6.34662,77412,5678

Maximale Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Test 2.3 MDRAID. RAID 0. Bandbreitentests


1 MB sequentielles Schreiben - 7820 MBPS.
1 MB sequentielles Lesen - 20418 MBPS.
Sequentielles Schreiben mit 128 KB - 7622 MBPS.
Sequentielles Lesen mit 128 KB - 20.380 MBPS.

Test 2.4 MDRAID. RAID 6. IOPS-Test


Lassen Sie uns nun sehen, was dieses System auf RAID-Ebene 6 hat.

Optionen zur Array-Erstellung
mdadm --create --verbose --chunk 16K / dev / md0 --level = 6 --raid-device = 12 / dev / nvme0n1 / dev / nvme1n1 / dev / nvme2n1 / dev / nvme3n1 / dev / nvme4n1 / dev / nvme5n1 / dev / nvme8n1 / dev / nvme9n1 / dev / nvme10n1 / dev / nvme11n1 / dev / nvme6n1 / dev / nvme7n1

Das Gesamtvolumen des Arrays betrug 7450,87 GiB.

Wir starten den Test nach der vorläufigen Initialisierung des RAID-Arrays.

Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k39907.64284961609.878167.6108594.6641950.41902561.6
8k19474.420701.630316.439737,857051.6394072.21875791.4
16k10371.410979.21602220992.829955.6225157.41267495.6
32k8505.68824.81289616657.823823173261.8596857.8
64k5679.459318576.211137.215906.4109469.6320874.6
128k3976.84170.25974.27716.61099668124.4160453.2
1m768,8811.21177.815152149.64880.45499

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Test 2.5 MDRAID. RAID 6. Verzögerungstests


Durchschnittliche Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k0,1937020,1455650,10558
8k0,2665820,1866180,127142
16k0,4262940,2816670,169504

Durchschnittliche Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Maximale Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k6.13064,54164.2322
8k6.24744,51973,5898
16k5.40745.58614.1404

Maximale Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Es ist erwähnenswert, dass MDRAID hier sehr gute Verzögerungen aufwies.

Test 2.6 MDRAID. RAID 6. Bandbreitentests


1 MB sequentielles Schreiben - 890 MBPS.
1 MB sequentielles Lesen - 18800 MBPS.
Sequentielles Schreiben mit 128 KB - 870 MBPS.
Sequentielles Lesen mit 128 KB - 10400 MBPS.

Test 3. Zvol über ZFS RAIDZ2


ZFS verfügt über eine integrierte RAID-Erstellungsfunktion und einen integrierten Volume-Manager, der virtuelle Blockgeräte erstellt, die von vielen Speicherherstellern verwendet werden. Wir werden diese Funktionen auch nutzen, indem wir einen Pool mit RAIDZ2-Schutz (analog zu RAID 6) und einem virtuellen Block-Volume darüber erstellen.

Version 0.79 (ZFS) wurde kompiliert. Optionen zur Array- und Volume-Erstellung:
ashift = 12 / komprimierung - aus / dedup - aus / aufzeichnungsgröße = 1M / atime = aus / cachefile = keine / Typ RAID = RAIDZ2

ZFS zeigt mit dem neu erstellten Pool sehr gute Ergebnisse. Bei wiederholtem Überspielen wird die Leistung jedoch erheblich verringert.

Der SNIA-Ansatz ist gut, da Sie nach wiederholten Überschreibungen echte Ergebnisse beim Testen ähnlicher Dateisysteme (das auf ZFS basierende) sehen können.

Test 3.1 ZVOL (ZFS). RAIDZ2. IOps-Test


Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k15719.615147.214190.215592.417965.644832.276314.8
8k15536.214929.415140.81655117898.844553.476187.4
16k16696.615937.215982.61735018546.244895,475549.4
32k11859.6109159698.210235.41126526741.838167.2
64k74446440.26313.26578.27465.614145.819099
128k4425.43785.64059.83859.44246.47143.410052.6
1m772730.2779,6784824.4995.81514.2

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Leistungsdaten sind völlig unscheinbar. Gleichzeitig liefert reines zvol (vor dem Umschreiben) signifikant bessere Ergebnisse (5-6 mal höher). Hier zeigte der Test, dass nach dem ersten Überspielen die Leistung abnimmt.

Test 3.2 ZVOL (ZFS). RAIDZ2. Verzögerungstests


Durchschnittliche Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k0,3328240,2552250,218354
8k0,32990,2590130,225514
16k0,1397380,1804670,233332

Durchschnittliche Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Maximale Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k90,5569,971884.4018
8k91,621486.6109104.7368
16k108,219286,2194105,658

Maximale Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Test 3.3 ZVOL (ZFS). RAIDZ2. Bandbreitentests


1 MB sequentielles Schreiben - 1150 MBPS.
1 MB sequentielles Lesen - 5500 MBPS.
Sequentielles Schreiben mit 128 KB - 1100 MBPS.
Sequentielles Lesen mit 128 KB - 5300 MBPS.

Test 4: RAIDIX ERA


Schauen wir uns nun die Tests unseres neuen Produkts - RAIDIX ERA - an.
Wir haben RAID6 erstellt. Streifengröße: 16kb. Führen Sie den Test nach Abschluss der Initialisierung aus.

Leistungsergebnis (IOps) in tabellarischer Form. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k354887363830486865.6619349.4921403.62202384.84073187.8
8k180914.8185371249927.2320438.8520188.41413096.42510729
16k92115.896327.2130661.2169247.4275446.6763307.41278465
32k59994.261765.283512.8116562.2167028.8420216.4640418.8
64k27660.428229.838687.656603.876976214958.8299137.8
128k14475.81473020674.230358.840259109258.2160141.8
1m2892.83031.84032.86331.67514.81587119078

Leistungsergebnis (IOps) in grafischer Form. Lese- / Schreibmischung%.



Test 4.2 RAIDIX ERA. RAID 6. Verzögerungstests


Durchschnittliche Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k0,163340,1363970,10958
8k0,2070560,1633250,132586
16k0,3137740,2257670,182928

Durchschnittliche Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Maximale Antwortzeit (ms) in Tabellenform. Lese- / Schreibmischung%.
BlockgrößeR0% / W100%R65% / W35%R100% / W0%
4k5.3713.42443,5438
8k5.2433,74153,5414
16k7.6284.28914.0562

Maximale Antwortzeit (ms) in grafischer Form. Lese- / Schreibmischung%.



Verzögerungen ähneln denen von MDRAID. Für genauere Schlussfolgerungen sollte jedoch eine Schätzung der Verzögerungen unter einer schwerwiegenderen Belastung durchgeführt werden.

Test 4.3 RAIDIX ERA. RAID 6. Bandbreitentests


1 MB sequentielles Schreiben - 8160 MBPS.
1 MB sequentielles Lesen - 19700 MBPS.
Sequentielles Schreiben mit 128 KB - 6200 MBPS.
Sequentielles Lesen mit 128 KB - 19700 MBPS.

Fazit


Als Ergebnis der Tests lohnt es sich, die aus Softwarelösungen erhaltenen Zahlen mit denen der Hardwareplattform zu vergleichen.

Um die Leistung des zufälligen Ladens zu analysieren, vergleichen wir die Geschwindigkeit von RAID 6 (RAIDZ2), wenn mit einem Block in 4k gearbeitet wird.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Hardware
4k R100% / W0%19025617631440731874,494,142
4k R65% / W35%108594179659214031823432
4k R0% / W100%3990715719354887958054



Um die Leistung der seriellen Last zu analysieren, betrachten wir RAID 6 (RAIDZ2) mit einem 128k-Block. Zwischen den Threads haben wir eine 10-GB-Verschiebung verwendet, um Cache-Treffer zu vermeiden und echte Leistung zu zeigen.
MD RAID 6RAIDZ2RAIDIX ERA RAID 6Hardware
128k seq gelesen1040053001970020.400
128k seq schreiben870110062007500



Was ist das Ergebnis?


Beliebte und kostengünstige Software-RAID-Arrays für die Arbeit mit NVMe-Geräten können nicht die Leistung anzeigen, die dem Hardwarepotenzial innewohnt.

Hier besteht ein sehr offensichtlicher Bedarf an einer Steuerungssoftware, die die Situation verschärfen und zeigen kann, dass die Programmsteuerungssymbiose mit NVMe-Laufwerken sehr produktiv und flexibel sein kann.

Um diese Anforderung zu verstehen, hat unser Unternehmen ein RAIDIX ERA-Produkt entwickelt, dessen Entwicklung sich auf die Lösung der folgenden Probleme konzentrierte:

  • Hohe Lese- und Schreibleistung (mehrere Millionen IOps) auf Arrays mit Parität im Mischmodus.
  • Streaming-Leistung von 30 GBit / s, auch während des Failovers und der Wiederherstellung.
  • Unterstützung für RAID-Level 5, 6, 7.3.
  • Hintergrundinitialisierung und Rekonstruktion.
  • Flexible Einstellungen für verschiedene Lasttypen (Benutzerseite).

Heute können wir sagen, dass diese Aufgaben abgeschlossen wurden und das Produkt einsatzbereit ist.

Gleichzeitig haben wir, da wir das Interesse vieler Interessenten an solchen Technologien verstanden haben, für die Veröffentlichung nicht nur eine kostenpflichtige, sondern auch eine kostenlose Lizenz vorbereitet, mit der Probleme sowohl auf NVMe- als auch auf SSD-Laufwerken vollständig gelöst werden können.

Weitere Informationen zu RAIDIX ERA finden Sie auf unserer Website .

UPD Reduzierte ZFS-Tests mit 8k für Recordsize und Volblocksize


ZFS-Optionstabelle
NAMEEIGENTUMWERTQUELLE
TankAufzeichnungsgröße8Klokal
TankKomprimierungausStandard
TankdedupausStandard
TankPrüfsummeauslokal
Tankvolblocksize- -- -
Panzer / SchlachtzugAufzeichnungsgröße- -- -
Panzer / SchlachtzugKomprimierungauslokal
Panzer / SchlachtzugdedupausStandard
Panzer / SchlachtzugPrüfsummeauslokal
Panzer / Schlachtzugvolblocksize8kStandard

Die Aufnahme ist schlechter geworden, das Lesen ist besser.
Trotzdem sind alle Ergebnisse deutlich schlechter als bei anderen Lösungen
BlockgrößeR0% / W100%R5% / W95%R35% / W65%R50% / W50%R65% / W35%R95% / W5%R100% / W0%
4k13703.814399.820903.8256693161066955.2140849.8
8k1512616227.222393.627720.234274.867008139480.8
16k11111.211412.416980.820812.824680.248803.683710.4

Source: https://habr.com/ru/post/de420837/


All Articles