Einfluss von RAID-Levels auf IOPS [geschlossen]

11

In Bezug auf IOPS habe ich im Internet mehrere Quellen gesehen, die darauf hinweisen, dass das IOPS einer bestimmten Anzahl von Festplatten einfach das IOPS einer einzelnen Festplatte multipliziert mit der Anzahl der Festplatten ist.

Wenn mein Verständnis von IOPS korrekt ist (und ich bin mir überhaupt nicht sicher), hätte ich gedacht, dass die Realität - neben vielen anderen Faktoren - vom RAID-Level abhängt. Mit RAID 1/10 werden alle Daten auf mindestens zwei Festplatten dupliziert, wodurch die Konkurrenz auf einer bestimmten Festplatte für einige E / A-Muster verringert wird. In gestreiften RAID-Levels wie RAID 0/5/6 werden Daten jedoch eher verteilt als dupliziert, was bedeutet, dass aufeinanderfolgende Leseanforderungen für dieselbe Spindel gelten können, was zum Blockieren führt, während die vorherige E / A abgeschlossen ist. Schriften sind noch umstrittener.

Ich sollte hinzufügen, dass ich schätze, dass die Realität aufgrund verschiedener Optimierungen und anderer Faktoren viel komplexer ist. Meine Frage ist wirklich nur, ob ich auf einer sehr grundlegenden Ebene verstehe, was IOPS bedeutet, auf dem richtigen Weg ist. Es könnte sein, dass meine Behauptung, dass IOPS sogar so von RAID-Levels beeinflusst werden könnte, auf ein grundlegendes Missverständnis des Konzepts hinweist.

dbr
quelle
4
Sie vereinfachen dies bis zu einem Punkt, an dem Sie die Auswirkungen des RAID-Controller-Cache, des Betriebssystems, des Anwendungsverhaltens, der synchronen oder asynchronen E / A und des Festplattentyps ausschließen. Also, wonach suchst du?
ewwhite
@ewwhite Sorry, ich hätte klarer sein sollen. Ich hoffe wirklich zu sehen, ob das Grundprinzip meines Denkens richtig ist, anstatt reale Vorhersagen zu treffen. Ich schätze, dass die Dinge in Wirklichkeit stark von allen möglichen Optimierungen und anderen Komplexitäten beeinflusst werden. Es gibt eine reale Situation im Hintergrund, aber wie es oft der Fall ist, wenn Sie sich mit etwas befassen, mit dem Sie nicht so vertraut sind, habe ich mich entschlossen, wegzugehen und etwas Hintergrundwissen zu lernen, damit ich mich ein bisschen fühle bequemer mit den Grundprinzipien.
dbr
Ich war versucht zu fragen, ob jemand Empfehlungen zum Lesen von guter Qualität in Bezug auf die Theorie und Konzepte des Speichers und seiner Leistung hat, aber ich habe dies nicht getan, da ich dachte, dass dies eine unangemessene Frage für ServerFault sein könnte. Es scheint ziemlich wenig qualitativ hochwertiges Schreiben zu diesem Thema im Internet zu geben, das ich bisher gefunden habe - vielleicht weil es ein ziemlich komplexes Thema ist, das nur wenige wirklich vollständig verstehen.
dbr
Die RAID-Leistung hängt wesentlich mehr von der Hardware und den Implementierungsgrenzen des Controllers ab als vom RAID-Level. Beispielsweise können RAID0, RAID1, RAID5 und RAID6 theoretisch alle Festplatten für lange Lesevorgänge verwenden, sodass sie auf einem idealen Controller genau die gleiche Lesegeschwindigkeit haben können.
Zac67

Antworten:

12

Bei Festplatten werden IOPS im Allgemeinen von der Zugriffszeit der Festplatte dominiert. Diesist die Summe aus Suchlatenz + Rotationsverzögerung + Übertragungsverzögerung. Da diese Variablen stark von den Zugriffsmustern abhängen und nicht offensichtliche Wechselwirkungen mit dem spezifischen RAID-Layout (dh der Streifengröße) und dem Controller (dh der Vorauswahl ) haben, ist jede einfache Antwort falsch.

Versuchen wir jedoch, eine Baseballfigur zu haben. In erster Näherung sollte das durch ein n-Platten-Array garantierte IOPS das N-fache des IOPS einer einzelnen Platte betragen. Sowohl das RAID-Level als auch das Datenzugriffsmuster ändern diese Näherung erster Ordnung jedoch dramatisch, indem das Gewicht zwischen Such- / Rotations- / Übertragungslatenz verschoben wird.

Nehmen wir einige Beispiele an, unter der Annahme von 100 IOPS pro einzelnen Festplatten (ein typischer Wert für Festplatten mit 7200 U / min) und 4-Festplatten-Arrays (mit Ausnahme von RAID1, häufig nur auf 2-Wege-Festplatten beschränkt):

  • Eine einzelne Festplatte hat 100 IOPS, sowohl beim Lesen als auch beim Schreiben (Hinweis: Aufgrund der Koaleszenz beim Schreiben sind die Schreib-IOPS im Allgemeinen höher als die Lese-IOPS, lassen Sie dies jedoch der Einfachheit halber ignorieren.)
  • RAID0 (4-Wege-Striping) hat bis zu 4x zufällige IOPS und bis zu 4x sequentielle IOPS. Das Schlüsselwort hier ist "bis zu": Aufgrund der Art des Stripings und der Datenausrichtung werden Sie mit viel niedrigeren IOPS enden, wenn sich die Sektoren mit wahlfreiem Zugriff überwiegend auf einer einzelnen Festplatte befinden.
  • RAID1 (2-Wege-Spiegelung) ist komplexer zu profilieren. Da verschiedene Festplatten nach unterschiedlichen Daten suchen können, hat sie bis zu 2x die zufälligen Lese-IOPS, aber die gleichen 1x (oder aufgrund des Overheads geringfügig niedrigeren) zufälligen Schreib-IOPS. Wenn alle Dinge gut aufeinander abgestimmt sind (dh große, aber nicht 100% sequentielle Lesevorgänge, kann ein RAID-Controller, der das Chunks / Stripes-Konzept / -Handling auch im Spiegelungsmodus verwendet, das Vorauslesen korrekt funktioniert usw.), sequentielle Lesevorgänge manchmal bis zu 2x einzeln sein Festplattenwert, während sequentielle Schreibvorgänge auf das 1-fache der einzelnen Festplatte begrenzt bleiben (dh keine Beschleunigung)
  • RAID10 (4-Wege-Spiegelung) liegt in Bezug auf die Leistung auf halbem Weg zwischen 4-Wege-RAID0-Striping und 2-Wege-Spiegelung. Es hat bis zu 4x die zufälligen Lese-IOPS und bis zu 2x die zufälligen Schreib-IOPS. Für sequentielle Übertragungen gilt der RAID1-Vorbehalt: Manchmal hat er bis zu 4x die sequentiellen Lese-IOPS, aber nur 2x die sequentiellen Schreib-IOPS. Beachten Sie, dass einige RAID10-Implementierungen (nämlich Linux MDRAID) unterschiedliche Layouts für RAID10-Arrays mit unterschiedlichem Leistungsprofil bieten .
  • RAID5 (Striped Parity) hat bis zu 4x die zufälligen Lese-IOPS, während zufällige Schreib-IOPS abhängig von einer Reihe von Faktoren wie der Größe des Schreibvorgangs in Bezug auf die Streifengröße, der Verfügbarkeit eines großen Streifen-Cache und dem Streifenrekonstruktionsalgorithmus selbst (Lesen-Rekonstruieren-Schreiben vs. Lesen-Ändern-Schreiben) usw. kann zwischen dem 0,5-fachen (oder weniger) und dem 2-fachen des IOPS einer einzelnen Festplatte liegen. Sequentielle Workloads sind vorhersehbarer, da das IOPS einer einzelnen Festplatte dreimal so hoch ist (sowohl zum Lesen als auch zum Schreiben).
  • RAID6 (Striped Double Parity) verhält sich ähnlich wie sein RAID5-Bruder, jedoch mit geringerer Schreibleistung. Es hat bis zu 4x die zufälligen Lese-IOPS einer einzelnen Festplatte, aber seine zufällige Schreibleistung ist noch geringer als bei RAID5, mit denselben absoluten Werten (0,5x - 2x), aber mit einem niedrigeren Durchschnitt der realen Wörter. Sequentielle Lese- und Schreibvorgänge werden auf das Zweifache des IOPS einer einzelnen Festplatte begrenzt.

Lassen Sie mich wiederholen: Die obigen Angaben sind einfache und fast gebrochene Annäherungen. Wenn Sie mit einem (stark unvollständigen) RAID IOPS-Rechner spielen möchten, schauen Sie hier .

Gehen Sie jetzt zurück in die reale Welt. Bei realen Workloads ist RAID10 häufig die schnellere und bevorzugte Wahl , um selbst angesichts eines verschlechterten Arrays eine hohe Leistung aufrechtzuerhalten . RAID5 und RAID6 sollten nicht für leistungsabhängige Workloads verwendet werden, es sei denn, sie sind lesenzentriert oder sequentiell. Es ist erwähnenswert, dass seriöse RAID-Controller über einen durch große Leistungsverluste geschützten Rückschreib-Cache verfügen , um (durch starkes Stripe-Caching) die geringe RAID5 / 6-Leistung beim zufälligen Schreiben zu überwinden. Verwenden Sie RAID5 / 6 niemals mit RAID-Controllern ohne Cache , es sei denn, Sie interessieren sich wirklich nicht für die Geschwindigkeit des Arrays.

SSD sind verschiedene Tiere, dachte ich. Paritätsbasierte RAIDs haben eine wesentlich geringere durchschnittliche Zugriffszeit und verursachen einen viel geringeren Leistungsaufwand. Sie sind eine viel praktikablere Option als Festplatten. Bei einer kleinen Workload mit zufälligem Schreibzugriff würde ich jedoch sowieso ein RAID10-Setup verwenden.

Shodanshok
quelle
Verwenden Sie RAID5 / 6 niemals mit RAID-Controllern ohne Cache, es sei denn, Sie interessieren sich wirklich nicht für die Geschwindigkeit des Arrays. Sie können damit durchkommen, wenn Sie wirklich wissen, was Sie tun, und Ihr E / A-Muster genau kontrollieren können. Wenn Sie nur sequentielle E / A-Vorgänge ausführen, die an die Stripe-Größe des Arrays angepasst sind, können Sie RAID5 / 6 ohne Cache verwenden. Und der Cache kann keine Leistung einsparen, wenn Sie genügend zufällige Schreibvorgänge mit kleinen Blöcken in ein RAID5 / 6-Array ausführen, obwohl der Wert von "genügend E / A-Vorgängen", die die Leistung beeinträchtigen, für einen wirklich guten RAID-Controller eine große Zahl sein kann.
Andrew Henle
@AndrewHenle Sicher, wenn nur sequentielle Lese- / Schreibvorgänge ausgegeben werden, die auf Streifen ausgerichtet sind, kann selbst ein cacheloser Controller im RAD5 / 6-Modus gute Ergebnisse erzielen. Dies ist jedoch ein sehr enges Verwendungsmuster (dh Streaming und Backups). Für die allgemeine Arbeitslast ist ein cacheloser Controller in Kombination mit einem Paritäts-RAID sehr langsam. Einige Controller benötigen sogar einen durch Leistungsverlust geschützten Rückschreibcache, damit Sie ein Paritäts-RAID erstellen können.
Shodanshok
Ich habe mehr über die Administratoren nachgedacht, die sich fragen, warum ihr 21-Laufwerk-RAID6-Array mit einem 19-MB-Speicher für Unternehmens-E-Mail-Speicher, weil eine größere Streifengröße größer sein muss, langsam ist ...
Andrew Henle
1

Es ist nur eine Frage der Definitionen. Sie können IOPS auf verschiedenen Ebenen im System messen und erhalten unterschiedliche Werte. Angenommen, Sie haben zwei gespiegelte Datenträger und schreiben so schnell wie möglich. Das IOPS, das zu den Festplatten geht, ist doppelt so hoch wie die Anzahl der IOPS, die eine einzelne Festplatte mit einer ähnlichen Schreiblast verarbeiten kann. Das in den Controller eingehende IOPS entspricht jedoch der Anzahl der IOPS, die eine einzelne Festplatte verarbeiten kann.

Normalerweise ist es uns wichtig, wie viele logische IOPS wir in das Array aufnehmen können, und es ist uns egal, was auf Festplattenebene passiert. In diesem Fall sind Sie korrekt und das IOPS hängt von der RAID-Stufe, der Anzahl der Festplatten, der Leistung der einzelnen Festplatten und in einigen Fällen von den spezifischen Merkmalen der Vorgänge ab.

David Schwartz
quelle