Warum ist IOPS wichtig?

32

Ich verstehe, was IOPS und Durchsatz sind. Der Durchsatz misst den Datenfluss, während MB / s und IOPS angeben, wie viele E / A-Vorgänge pro Sekunde ausgeführt werden.

Was ich nicht verstehe, ist, warum viele Speicherdienste nur die von ihnen bereitgestellten IOPS anzeigen. Ich kann wirklich kein Szenario sehen, in dem ich lieber den IOPS als den Durchsatz kennen möchte.

Warum ist IOPS wichtig? Warum zeigt AWS seine Speicherbereitstellungen hauptsächlich in IOPS an? Wo sind IOPS relevanter als der Durchsatz (MB / s)?


BEARBEITEN:

Einige Leute untersuchen diese Frage, als ob ich gefragt hätte, was Direktzugriff ist und wie sich dies auf die Leistung auswirkt oder wie HDD und SSD funktionieren. Obwohl ich denke, dass diese Informationen für Leute nützlich sind, die noch nicht mit Speicherverhalten vertraut sind, wird viel Wert darauf gelegt und es ist nicht das Ziel der Frage, die Frage ist: "Welche neuen Informationen erhalte ich, wenn ich eine IOPS-Nummer sehe, die ich nicht sehen würde, eine Durchsatzzahl (MB / s)?"

mFeinstein
quelle
3
Wenn Sie große Datenmengen verschieben möchten, ist Ihnen der Durchsatz wichtig. Wenn Sie viele kleine Daten r / w benötigen, benötigen Sie mehr IOPS. eg1 Wenn es eine einzelne Operation gibt, die MB Daten vom Gerät lesen kann, benötigen Sie nur eine Operation, um einen hohen Durchsatz zu erzielen. eg2 Wenn Sie Dutzende von Dateiattributen lesen müssen, sehen Sie nicht jedes Mal große Datenmengen, sondern müssen viele Operationen ausführen, um kleine Datenmengen abzurufen. Der Durchsatz wäre gering, aber Sie würden viele Operationen benötigen.
TafT

Antworten:

32

Durchsatz

Der Durchsatz ist nützlich, wenn Sie beispielsweise Dateien kopieren. Wenn Sie fast alles andere tun, werden Sie durch zufällige Lese- und Schreibvorgänge auf der Festplatte eingeschränkt.

IOPS

IOPS spezifizieren typischerweise die Größe jedes Datenpakets. Zum Beispiel kann AWS gp2 tun 10.000 IOPS mit einem 16 KiB Nutzlastgröße. Das multipliziert sich auf 160MiB / Sek. Es ist jedoch wahrscheinlich unwahrscheinlich, dass Sie immer die volle Nutzlastgröße verwenden, sodass der tatsächliche Durchsatz wahrscheinlich niedriger sein wird. NB KiB ist 1024 Bytes, KB ist 1000 Bytes.

Weil IOPS eine Paketgröße angibt, die Ihnen auch den Gesamtdurchsatz ermöglicht. Ein hoher Durchsatz bedeutet jedoch nicht, dass Sie einen hohen IOPS-Wert haben.

Szenarien

Betrachten Sie diese Szenarien:

  • Starten Sie Ihren PC. Betrachten Sie den Unterschied zwischen einer SSD und einer sich drehenden Festplatte in Ihrem Computer, mit dem viele Menschen Erfahrungen aus erster Hand haben. Bei einer sich drehenden Festplatte kann die Startzeit eine Minute betragen, bei einer SSD dagegen 10 bis 15 Sekunden. Dies liegt daran, dass höhere IOPS zu einer geringeren Latenz führen, wenn Informationen angefordert werden. Der Durchsatz der sich drehenden Festplatte ist mit 150 MB / s recht gut, obwohl die SSD wahrscheinlich höher ist. Dies ist nicht der Grund, warum sie schneller ist - es ist die geringere Latenz für die Rückgabe von Informationen.
  • Ausführen eines Betriebssystemupdates. Es wird die gesamte Festplatte durchsucht, Dateien hinzugefügt und gepatcht. Wenn Sie einen niedrigen IOPS-Wert hätten, wäre dieser unabhängig vom Durchsatz langsam.
  • Ausführen einer Datenbank, z. B. Auswählen einer kleinen Datenmenge aus einer großen Datenbank. Es liest aus dem Index, liest aus einer Reihe von Dateien und gibt dann ein Ergebnis zurück. Wieder wird die gesamte Festplatte durchsucht, um die Informationen zu sammeln.
  • Ein Spiel auf Ihrem PC spielen. Wahrscheinlich wird eine große Anzahl von Texturen von überall auf der Festplatte geladen. In diesem Fall sind wahrscheinlich IOPS und Durchsatz erforderlich.

LTO-Band

Betrachten Sie für einen Moment ein Bandsicherungssystem. LTO6 kann 400 MB / Sek. Erreichen, aber (ich vermute hier) kann wahrscheinlich nicht einmal einen zufälligen IOP ausführen. Er kann so niedrig wie Sekunden pro IOP sein. Andererseits kann es wahrscheinlich eine ganze Menge sequentieller IOPS ausführen, wenn ein IOPS als Lesen oder Schreiben eines Datenpakets auf Band definiert ist.

Wenn Sie versuchen, ein Betriebssystem von einem Band zu booten, dauert es lange, wenn es überhaupt funktioniert. Deshalb ist IOPS oft hilfreicher als der Durchsatz.

Um ein Speichergerät zu verstehen, möchten Sie wahrscheinlich wissen, ob es sich um zufälliges oder sequentielles IOPS handelt und wie groß das IO ist. Daraus können Sie den Durchsatz ableiten.

AWS

Beachten Sie, dass AWS auf dieser Seite sowohl IOPS- als auch Durchsatzzahlen für alle Speichertypen veröffentlicht . Allzweck-SSD (gp2) kann 10.000 16-KByte-IOPS ausführen, was einem Maximum von 160 MByte / s entspricht. Bereitgestelltes IOPS (io1) ist 20.000 16-KByte-IOPS, was einem Maximum von 320 MByte / s entspricht.

Beachten Sie, dass für gp2-Volumes 30IOPS pro GB bereitgestellt werden. Um 10.000 IOPS zu erhalten, benötigen Sie ein 333,33 GB-Volume. Ich erinnere mich nicht, ob io1-Volumes eine ähnliche Einschränkung haben (es ist eine Weile her, dass ich die zugehörigen Prüfungen gemacht habe, bei denen solche Dinge getestet wurden), aber ich vermute, dass sie dies tun, und wenn ja, sind es wahrscheinlich 60IOPS pro GB.

Fazit

Ein hoher sequenzieller Durchsatz ist nützlich und in einigen Fällen der begrenzende Faktor für die Leistung, aber in den meisten Fällen ist ein hoher IOPS wahrscheinlich wichtiger. Selbstverständlich benötigen Sie unabhängig von IOPS immer noch einen angemessenen Durchsatz.

Tim
quelle
Ich verstehe, dass IOPS die Zufallszugriffsleistung misst, aber es zeigt nicht, wie schnell Sie Dinge tun ... Sie tun möglicherweise 10000 IOPS, aber dies könnte etwas Langsames oder Schnelles sein. Die einzige Möglichkeit, dies zu wissen, ist zu wissen, wie viele MB / s der Vorgang ist aufwendig.
mFeinstein
IOPS gibt normalerweise die Nutzdatengröße an. AWS sagt 16KiB. 10.000 IOPS bei 16 KB / s ergeben also 160 MB / s.
Tim
2
10000 IOPS bei 16 KB werden jedoch nicht in 20000 IOPS bei 8 KB übersetzt (möglicherweise ~ 11000). Dies bedeutet, dass Sie sowohl IOPS als auch Durchsatz kennen müssen, um eine Laufwerks- / Arbeitslast zu bestimmen.
boot4life
4
Um pedantisch zu sein, es ist immer noch 1 IOPS, nicht 1 IOP. Das s ist kein Plural
Matthew Steeples
1
Ich kann an keine anderen denken. Die meisten Dinge mit hohem IOPS weisen einen angemessen hohen Durchsatz auf, sind jedoch in den meisten Fällen nützlich, da der IOPS nicht der Durchsatz ist. Ein anderes Beispiel könnte eine relationale Datenbank sein, obwohl dies kein Speichergerät ist, sondern eine Software. Ich bin mir nicht sicher, was Sie sonst noch von dieser Frage erwarten. Ich denke, das Konzept wurde Ihnen gründlich erklärt. Alles, was eine hohe Suchzeit oder Latenz hat, hat wahrscheinlich einen niedrigen IOPS, aber der Durchsatz kann entkoppelt werden und in einigen Fällen hoch sein.
Tim
57

Dies liegt daran, dass beim sequenziellen Durchsatz nicht die meisten E / A-Aktivitäten stattfinden.

Zufällige Lese- / Schreibvorgänge sind repräsentativer für die normale Systemaktivität, und dies ist normalerweise an IOPS gebunden.

Das Streamen von Pornos von einem meiner Server zu unseren Kunden (oder das Hochladen auf unser CDN) erfolgt sequentieller und Sie werden die Auswirkungen des Durchsatzes dort sehen.

Die Pflege der Datenbank, in der Pornos katalogisiert und Benutzeraktivitäten auf der Website verfolgt werden, erfolgt jedoch nach dem Zufallsprinzip und ist durch die Anzahl der kleinen E / A-Vorgänge pro Sekunde begrenzt, die der zugrunde liegende Speicher ausführen kann.

Ich benötige möglicherweise 2.000 IOPS, um die Datenbanken bei maximaler Auslastung ausführen zu können. Aufgrund der Art der Aktivität wird jedoch möglicherweise nur ein Datendurchsatz von 30 MB / s auf Datenträgerebene angezeigt. Die Datenträger sind zu 1200 MB / s in der Lage, aber die IOPS sind die Einschränkung in der Umgebung.

Auf diese Weise kann das Kapazitätspotential eines Speichersystems beschrieben werden. Eine SSD kann 80.000 IOPS und einen Durchsatz von 600 MB / s leisten. Sie können diesen Durchsatz mit 6 normalen 10-KByte-SAS-Datenträgern erzielen, dies würde jedoch nur etwa 2.000 IOPS ergeben.

ewwhite
quelle
Könnten Sie mir ein Beispiel geben, in dem IOPS mir einen Einblick in die Leistung meines Systems gibt, in dem MB / s nicht nützlich sind?
mFeinstein
@mFeinstein Siehe Pornobeispiel oben.
ewwhite
33
+1 für
Pornobeispiel
2
Ein Betriebssystem führt wahrscheinlich auch ein paar kleine zufällige Zugriffe aus. SEQ-Durchsatz wird nicht helfen. Das ist ein Grund, das Betriebssystem zumindest auf PCs auf einer SSD laufen zu lassen.
Sudo
3
Ich sehe oft voll ausgelastete Festplatten mit ~ 2 MB / s. Das ist, weil es 100% zufällige IO ist. Manchmal sind unglaubliche Leistungssteigerungen möglich, wenn Daten nacheinander auf der Festplatte abgelegt werden (z. B. Entfernen von Fragmenten, Indizieren in Datenbanken).
boot4life
6

Während die Antwort von ewwhite völlig richtig ist, wollte ich einige konkretere Zahlen angeben, um zu erklären , warum der Unterschied in der Perspektive von Bedeutung ist.

Wie ewwhite bereits korrekt angegeben hat, führen die meisten Nicht-Streaming-Anwendungen in erster Linie nicht sequentielle Festplattenoperationen aus, weshalb IOPS zusätzlich zum theoretischen Spitzendurchsatz eine Rolle spielen.

Als ein Kollege und ich zum ersten Mal SSDs in unseren Entwicklungssystemen installierten, um die zuvor verwendeten Festplatten zu ersetzen, haben wir einige Leistungsmessungen durchgeführt, die deutlich machten, warum dies wichtig ist:

SATA HDD Ergebnisse:

Sequentieller Lesedurchsatz: ~ 100 MB / s
Nicht-sequentieller Lesedurchsatz (2k Blöcke, IIRC): ~ 1 MB / s

PCIe-SSD-Ergebnisse:

Sequentieller Lesedurchsatz: ~ 700 MB / s
Nicht-sequentieller Lesedurchsatz (2k Blöcke, IIRC): ~ 125 MB / s

Wie Sie dem Beispiel deutlich entnehmen können, würde die Auflistung eines maximalen Durchsatzes für jedes Gerät ein äußerst ungenaues Bild des Vergleichs ergeben. Die SSD ist nur etwa 6-7x so schnell wie die HDD, wenn große Dateien nacheinander gelesen werden. Sie ist jedoch über 100x so schnell, wenn kleine Datenblöcke von verschiedenen Teilen der Festplatte gelesen werden. Natürlich ist diese Einschränkung bei Festplatten im Wesentlichen auf die Tatsache zurückzuführen, dass Festplatten den R / W-Kopf physisch auf die gewünschte Spur bewegen und dann warten müssen, bis sich die gewünschten Daten unter dem Kopf drehen, während SSDs keine physischen Teile zum Bewegen haben.

Unsere Kompilierzeiten haben sich wesentlich dramatischer verbessert, als ein einfacher Vergleich der maximalen Durchsätze nahegelegt hätte. Builds, die zuvor über 30 Minuten dauerten, wurden nun in ungefähr einer Minute fertiggestellt, da die Festplatten-E / A während eines großen Builds aus dem Lesen und Schreiben vieler separater Quelldateien besteht, die nicht einzeln sehr groß sind und möglicherweise physisch auf der gesamten Festplatte verteilt sind .

Indem Sie sowohl Durchsatz- als auch IOPS-Zahlen bereitstellen, können Sie eine bessere Vorstellung davon bekommen, wie eine bestimmte Arbeitslast auf einem bestimmten Speichergerät ausgeführt wird. Wenn Sie nur große Datenmengen streamen, die nicht fragmentiert sind, kommen Sie dem maximalen Durchsatz ziemlich nahe. Wenn Sie jedoch viele kleine Lese- und / oder Schreibvorgänge ausführen, die nicht sequenziell auf der Festplatte gespeichert sind, wird IOPS Sie einschränken.

reirab
quelle
Haben Sie nicht auch den IOPS gemessen?
mFeinstein
3

Um eine E / A-Operation auszuführen, müssen die Laufwerke eine Reihe von Operationen durchlaufen. Für eine mechanische Festplatte müssen sie.

  1. Suchen Sie nach der richtigen Spur und wählen Sie den richtigen Kopf aus.
  2. Warten Sie, bis sich der Plattenteller in die richtige Position gedreht hat.
  3. Übertragen Sie die Daten tatsächlich.

Die für 3 benötigte Zeit hängt von der Größe des Datenblocks ab, die für 1 und 2 benötigte Zeit ist jedoch unabhängig von der Größe der Anforderung.

Der Headline-Durchsatz und die IOPs stellen Extremfälle dar. Die Headline Throghput-Zahlen stellen den Fall dar, in dem jede Operation einen großen Datenblock umfasst, sodass das Laufwerk die meiste Zeit damit verbringt, Daten tatsächlich zu verschieben.

Die Überschriften-IOPs stellen den Fall dar, in dem die Datenblöcke sehr klein sind, sodass die meiste Zeit damit verbracht wird, die Köpfe zu suchen und darauf zu warten, dass sich die Platten drehen.

Für viele Workloads sind die Blöcke so klein, dass die Anzahl der zu übertragenden Blöcke weitaus wichtiger ist als die Größe der Blöcke.

Peter Green
quelle
2

Es gibt zwei Arten von Engpässen bei E / A-Volumes (oder allgemein bei E / A).

Die tatsächliche Leistung wird in der Tat so gemessen, dass sie eine Komponente umfasst, die auf dem verschobenen Datenvolumen basiert, das durch die verfügbare Bandbreite oder eine ähnliche Einheitenkostengröße * skaliert wird. Es gibt jedoch auch einen mit Anforderungen verbundenen Overhead, der konstant ist, sei es Festplatte, Netzwerk oder zahlreiche andere Dinge.

Einheitskosten * Größe + Overhead. die Gleichung einer Linie.

Wenn die Einheitenkosten hoch sind oder die Größe hoch ist, ist es sinnvoll, Gebühren basierend auf diesen Volumes zu berechnen, z. B. in Mobilfunknetzen. Andererseits sind die Gemeinkosten manchmal weitaus kritischer.

Sie können selbst ein einfaches Experiment durchführen, ein Verzeichnis mit wenigen 1-GB-Dateien erstellen (oder was auch immer praktisch ist, es dauert einige Sekunden, um es zu lesen / schreiben) und dann einen Ordner mit einer Million 100-Byte-Dateien erstellen (Beachten Sie, dass dies 0,1 GB Daten sind), und sehen Sie, was mit Ihrem Durchsatz geschieht, wenn Sie versuchen, all diese Dinge, wie z die Anzahl der Dateien für die kleineren Sachen.

Ich würde annehmen, dass amazon beide Lademodelle kennt und einfach herausgefunden hat, dass eines die Fähigkeiten ihrer Infrastruktur besser repräsentiert.

Es gibt ein Limit für die Größe eines IOP, das weitgehend mit dem Betrag zusammenhängt, den der Speicher in einem "Zyklus" übertragen kann. Daher kosten große Anforderungen immer noch mehrere IOPS.

Hier gibt es ein schönes Stück von amazon selbst über IOPS und Kosten und "Einsparungen", die sie durch Optimierungen weitergeben

E / A-Eigenschaften und Überwachung

Lesen Sie nicht alles, aber es sieht interessant aus, wenn Sie neugierig auf diese Gegend sind.

Iain Price
quelle
2

Beantwortung Ihrer Frage

"Welche neuen Informationen erhalte ich, wenn ich eine IOPS-Nummer sehe, ohne dass ich eine Durchsatzzahl (MB / s) sehe?"

Direkt hängt es davon ab, wie viele E / A-Vorgänge mit der angegebenen Warteschlangentiefe und Dateigröße pro Sekunde gespeichert werden können . Sie können den Durchsatz unter bestimmten Bedingungen mit der folgenden Formel berechnen:

IOPS * Dateigröße = Durchsatz

Speichertests können je nach Dateigröße und Warteschlangentiefe eine unterschiedliche Anzahl von IOPS generieren. Bei Warteschlangentiefe = 1 oder 2 nutzt der Controller das Caching nicht, während bei Warteschlangentiefe 32, 256 und 512 die Anzahl mehrmals ansteigt und sich nicht viel ändert. Bei einer Dateigröße von 128 KB könnte die IOPS-Anzahl neben 4 KB-Dateien niedriger sein, aber der Durchsatz ist höher.

Die beste Methode zur Bewertung der Leistung eines Speichers besteht darin, IOPS- und Durchsatztests bei verschiedenen Blockgrößen und Warteschlangentiefen durchzuführen.

Eugene
quelle
Ich glaube, Sie könnten IOPS mit Durchsatz etwas verwechseln ... Durchsatz ist kein Synonym für kontinuierlichen Zugriff, aber die Gesamt-MB / s, die der Speicher zu einem bestimmten Zeitpunkt verarbeiten konnte .... Also, wenn Sie sagen, die Festplatte und Die SSD hätte den gleichen Durchsatz, sie ist für den kontinuierlichen Zugriff vorgesehen ... Da es auch für den wahlfreien Zugriff einen Durchsatz gibt ... Nur viel weniger für Festplatten im Allgemeinen aufgrund der Suchdauer.
mFeinstein
Deshalb sollten Sie in Ihre Antwort einbeziehen, dass Sie sich am Anfang auf den kontinuierlichen Zugriff und am Ende auf den wahlfreien Zugriff beziehen, da IOPS nicht gleichbedeutend mit dem wahlfreien Zugriff ist Messung
mFeinstein
@mFeinstein Ich habe die Antwort bearbeitet, schau mal.
Eugene
1

Generell ist IOPS schwieriger zu bekommen als der Durchsatz. Wenn Sie viele IOPS haben, haben Sie die meiste Zeit genug Durchsatz.

Bei klassischen Festplatten ist die Anzahl der Achsen Ihr begrenzender Faktor, da der Kopf auf jeder Festplatte physisch bewegt werden muss: und es ist furchtbar langsam. SSDs haben eine weitaus bessere IOPS-Kapazität.

Wenn Sie nur einen Benutzer haben, der eine große Datei in das Netzwerk kopiert, müssen Sie möglicherweise nur ein Dutzend Mal versuchen, die Daten abzurufen, und der Rest wird nur von der Festplatte gestreamt.

Wenn Sie jedoch auf eine Datenbank zugreifen oder viele gleichzeitige Benutzer haben, müssen Sie gleichzeitig auf verschiedene Teile Ihres Speichers zugreifen, wobei der IOPS-Anstieg zunimmt.

Allein das parallele Aktualisieren von 10 Zeilen in einer relationalen Datenbank kann dazu führen, dass Hunderte von E / A-Vorgängen generiert werden: Lesen der Indizes, Lesen der Daten, Anhängen der Protokolldatei, Aktualisieren der Indizes und der Daten. Die meisten Betriebssysteme und Datenbanken bemühen sich sehr, die Anzahl der E / A-Vorgänge durch Zwischenspeichern und Verzögern / Gruppieren der E / A-Vorgänge zu begrenzen, wenn dies möglich ist.

Xavier Nicollet
quelle
1

Ich werde auch meine eigene Frage beantworten, da ich denke, dass die meisten Antworten nicht zum Thema passen und die Antwort viel einfacher sein könnte:

Wenn Sie sich nur den Durchsatz Ihrer Speichergeräte ansehen, werden Sie möglicherweise den Überblick verlieren. Wenn der Durchsatz niedrig ist (niedrige MB / s), verfügen Sie möglicherweise über ein langsames Gerät ODER haben viel wahllosen Zugriff auf eine Festplatte oder ein anderes Gerät das geht nicht gut mit wahlfreiem Zugriff um.

Wenn Sie sich die IOPS ansehen und die Blockgröße jeder E / A-Operation kennen, können Sie feststellen, wie viele Zugriffe auf das Speichergerät möglich sind und wie hoch der Durchsatz dieser IOPS ist (Blockgröße * IOPS).

Wenn Sie also einen hohen IOPS-Wert betrachten, können Sie feststellen, dass Ihr Speichergerät eine Menge wahlfreier Zugriffe verarbeitet, selbst wenn dies mit geringem Durchsatz einhergeht müßig.

Wenn wir uns also die IOPS ansehen, können wir einen Einblick bekommen, was der Durchsatz tatsächlich bedeutet. Beide ergänzen sich.

mFeinstein
quelle
IOPS = Inputs / Outputs Per Second, es geht nicht um Plural und das nachfolgende S sollte nicht weggelassen werden. :)
Eugene
1
Es geht nicht um Plural, ich habe gesehen, dass einige Leute IOP als Abkürzung für "I / O OPeration" bezeichnen, wie es sich anhört ... Aber ja, dies könnte zu Verwirrung führen, also werde ich es ersetzen, danke
mFeinstein