Frage Warum sind IOPS wichtig?


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

Was ich nicht verstehe ist, warum viele Speicherdienste nur die IOPS anzeigen, die sie bereitstellen. Ich kann wirklich kein Szenario sehen, in dem ich die IOPS anstelle des Durchsatzes bevorzugen würde.

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


BEARBEITEN:

Einige Leute schauen sich diese Frage an, als ob ich fragen würde, welcher Direktzugriff ist und wie er sich auf die Leistung auswirkt oder wie HDD und SSD funktionieren ... obwohl ich denke, dass diese Informationen für Personen nützlich sind, die mit Speicherverhalten noch nicht vertraut sind, wird viel Augenmerk darauf gelegt dazu und es ist nicht das Ziel der Frage, um die es geht "Welche neue Information bekomme ich, wenn ich eine IOPS-Nummer sehe, dass ich keine Durchsatzrate (MB / s) sehen würde?"


30
2018-05-22 21:56


Ursprung


Interessanter Artikel - Tim
Wenn Sie große Datenmengen verschieben möchten, ist der Durchsatz wichtig. Wenn Sie viele kleine Daten lesen müssen, benötigen Sie mehr IOPS. z. B. Wenn es eine einzelne Operation gibt, die MB von Daten von dem Gerät lesen kann, dann brauchen Sie nur 1 Operation, um einen hohen Durchsatz zu erhalten. Wenn Sie z. B. Dutzende von Dateiattributen lesen müssen, sehen Sie nicht jedes Mal eine große Menge an Daten, sondern müssen eine Menge Operationen ausführen, um kleine Datenmengen zu holen. Der Durchsatz wäre gering, aber Sie würden viele Operationen benötigen. - TafT


Antworten:


Durchsatz

Der Durchsatz ist nützlich, wenn Sie beispielsweise Dateien kopieren. Wenn Sie fast alles andere machen, werden zufällige Lese- und Schreibvorgänge auf der Festplatte durchgeführt, die Sie einschränken.

IOPS

IOPS geben normalerweise die Größe jedes Datenpakets an. Zum Beispiel kann AWS gp2 10.000 IOPS mit einer 16 durchführenKiB Nutzlastgröße. Das multipliziert sich zu 160MiB / sec. Es ist jedoch wahrscheinlich unwahrscheinlich, dass Sie immer die volle Nutzlastgröße verwenden, sodass der tatsächliche Durchsatz wahrscheinlich niedriger ist. NB KiB ist 1024 Bytes, KB ist 1000 Bytes.

Weil IOPS eine Paketgröße angeben, die auch den Gesamtdurchsatz ergibt. Während hoher Durchsatz nicht bedeutet, dass Sie hohe IOPS haben.

Szenarien

Betrachten Sie diese Szenarien:

  • Booten Sie Ihren PC. Betrachten Sie den Unterschied zwischen einer SSD und einer sich drehenden Festplatte in Ihrem Computer, mit der viele Leute aus erster Hand Erfahrung haben. Bei einer rotierenden Festplatte kann die Boot-Zeit eine Minute betragen, bei einer SSD kann dies bis zu 10 - 15 Sekunden dauern. Dies liegt daran, dass höhere IOPS zu einer geringeren Latenz führen, wenn Informationen angefordert werden. Der Durchsatz der rotierenden Festplatte ist ziemlich gut, 150 MB / s, obwohl die SSD wahrscheinlich höher ist, ist dies nicht der Grund, warum es schneller ist - es ist die niedrigere Latenz, um Informationen zurückzugeben.
  • Ausführen eines Betriebssystemupdates Es geht über die ganze Festplatte, fügt Dateien hinzu und patcht sie. Wenn Sie niedrige IOPS hätten, wäre es 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 geht es über die ganze Scheibe, um die Informationen zu sammeln.
  • Ein Spiel auf dem PC spielen. Es lädt wahrscheinlich eine große Anzahl von Texturen von überall auf der Festplatte. In diesem Fall sind IOPS und Durchsatz wahrscheinlich erforderlich.

LTO-Band

Betrachten Sie für einen Moment ein Bandsicherungssystem. LTO6 kann 400MB / Sek. Machen, aber (ich vermute hier) wahrscheinlich nicht einmal einen zufälligen IOP, es könnte so niedrig wie Sekunden pro IOP sein. Auf der anderen Seite kann es wahrscheinlich eine ganze Reihe von sequentiellen IOPS tun, wenn ein IOPS als Lesen oder Schreiben eines Datenpakets auf Band definiert ist.

Wenn Sie versucht haben, ein OS von Band zu booten, würde es lange dauern, wenn es überhaupt funktionierte. Aus diesem Grund ist IOPS oft hilfreicher als der Durchsatz.

Um ein Speichergerät zu verstehen, möchten Sie wahrscheinlich wissen, ob es zufällige oder sequentielle IOPS und die IO-Größe ist. Daraus können Sie den Durchsatz ableiten.

AWS

Beachten Sie, dass AWS sowohl IOPS- als auch Durchsatzzahlen für alle Speichertypen veröffentlicht, auf dieser Seite. Allzweck-SSD (gp2) kann 10.000 16KiB IOPS ausführen, was ein Maximum von 160 MB / s ergibt. Bereitgestellte IOPS (io1) sind 20.000 16KiB IOPS, was ein Maximum von 320MB / sec ergibt.

Beachten Sie, dass Sie bei gp2-Volumes 30IOPS pro bereitgestelltem GB erhalten. Um also 10.000 IOPS zu erhalten, benötigen Sie ein 333.33GB-Volume. Ich kann mich nicht erinnern, ob io1-Volumes eine ähnliche Einschränkung haben (es ist eine Weile her, dass ich die Associate-Prüfungen gemacht habe, bei denen solche Dinge getestet werden), aber ich vermute, dass sie es tun, und wenn es so ist, sind es wahrscheinlich 60IOPS pro GB.

Fazit

Ein hoher sequenzieller Durchsatz ist nützlich und in einigen Fällen ist dies der limitierende Faktor für die Leistung, aber hohe IOPS sind in den meisten Fällen wahrscheinlich wichtiger. Sie benötigen natürlich immer noch einen vernünftigen Durchsatz, unabhängig von IOPS.


32
2018-05-22 22:13



Ich bekomme, dass IOPS Random Access Performance misst, aber es zeigt nicht wirklich, wie schnell Sie Dinge tun ... Sie könnten 10000 IOPS, aber dies könnte etwas langsam oder schnell sein, die einzige Möglichkeit zu wissen ist, wie viele MB / s der Vorgang verbraucht. - mFeinstein
IOPS geben normalerweise die Datennutzlastgröße an. AWS sagt 16KiB. So ergeben 10.000 IOPS bei 16KiB / s 160MB / Sek. - Tim
10000 IOPS bei 16 KB werden jedoch nicht zu 20000 IOPS bei 8 KB (möglicherweise ~ 11000) übersetzt. Dies bedeutet, dass man sowohl IOPS als auch den Durchsatz kennen muss, um ein Laufwerk / eine Arbeitslast zu bewerten. - boot4life
Um pedantisch zu sein, ist es immer noch 1 IOPS, nicht 1 IOP. Das s ist kein Plural - Matthew Steeples
Ich kann nicht an andere denken. Die meisten Dinge, die hohe IOPS sind, sind relativ hoher Durchsatz, aber in den meisten Fällen sind sie wegen der IOPS nicht der Durchsatz nützlich. Ein anderes Beispiel könnte eine relationale Datenbank sein, obwohl das kein Speichergerät ist, sondern 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 mit einer hohen Suchzeit oder Latenz hat wahrscheinlich niedrige IOPS, aber der Durchsatz kann entkoppelt sein und in manchen Fällen hoch sein. - Tim


Dies liegt daran, dass der sequenzielle Durchsatz nicht die Art und Weise ist, in der die meisten E / A-Aktivitäten auftreten.

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

Streaming Porno von einer meiner Server zu unseren Kunden (oder Upload zu unserem CDN) ist sequenzieller Natur und Sie werden die Auswirkungen des Durchsatzes dort sehen.

Aber die Datenbank, die den Porno katalogisiert und die Benutzeraktivitäten über die Site verfolgt, wird zufällig sein und durch die Anzahl der kleinen E / A-Vorgänge / Sekunde begrenzt sein, zu denen der zugrundeliegende Speicher fähig ist.

Ich benötige möglicherweise 2000 IOPS, um die Datenbanken bei Spitzenlast ausführen zu können, kann jedoch aufgrund der Art der Aktivität nur 30 MB / s Durchsatz auf Datenträgerebene anzeigen. Die Festplatten sind 1200 MB / s fähig, aber die IOPS sind die Begrenzung in der Umgebung.

Dies ist eine Möglichkeit, das Kapazitätspotenzial eines Speichersystems zu beschreiben. Eine SSD kann 80.000 IOPS und 600 MB / s Durchsatz bewältigen. Sie können diesen Durchsatz mit 6 normalen SAS-Festplatten mit 10.000 GB erreichen, aber das würde nur 2.000 IOPS ergeben.


57
2018-05-22 22:05



Könnten Sie mir ein Beispiel geben, bei dem IOPS mir einen Einblick in die Leistung meines Systems geben würde, wo MB / s nicht nützlich sind? - mFeinstein
@mFeinstein Siehe oben porn Beispiel. - ewwhite
+1 für ein Pornobeispiel lol - mFeinstein
Außerdem macht ein Betriebssystem wahrscheinlich eine Reihe kleiner zufälliger Zugriffe. Seq-Durchsatz wird nicht helfen. Das ist ein Grund, das Betriebssystem zumindest auf PCs auf einer SSD zu betreiben. - sudo
Ich sehe oft voll ausgelastete Festplatten mit ~ 2MB / Sek. Das liegt daran, dass es zu 100% zufällig ist. Manchmal sind unglaubliche Perf-Gewinne möglich, indem Daten sequentiell auf der Platte angeordnet werden (z. B. Entfernen von Fragmentierung, Indizieren in Datenbanken). - boot4life


Während ewwhite Antwort ist völlig richtig, ich wollte einige konkretere Zahlen zur Verfügung stellen, nur um zu verdeutlichen, warum der Unterschied in der Perspektive wichtig ist.

Wie schon ewhite bereits richtig ausgeführt hat, führen die meisten Nicht-Streaming-Anwendungen primär nicht-sequentielle Plattenoperationen durch, weshalb IOPS neben dem theoretischen Spitzendurchsatz eine Rolle spielen.

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

SATA HDD Ergebnisse:

Sequenzieller Lese-Durchsatz: ~ 100 MB / s
Nicht sequentieller Lese-Durchsatz (2k Blöcke, IIRC): ~ 1 MB / s

PCIe-Attached SSD Ergebnisse:

Sequenzieller Lese-Durchsatz: ~ 700 MB / s
Nicht sequentieller Lese-Durchsatz (2k Blöcke, IIRC): ~ 125 MB / s

Wie Sie dem Beispiel entnehmen können, würde die Auflistung eines maximalen Datendurchsatzes für jedes Gerät ein äußerst ungenaues Bild des Vergleichs liefern. Die SSD ist beim sequentiellen Lesen großer Dateien nur etwa 6-7x so schnell wie die Festplatte, aber beim Lesen kleiner Datenblöcke von verschiedenen Teilen der Festplatte ist sie über 100x so schnell. Bei HDDs ist diese Einschränkung natürlich hauptsächlich darauf zurückzuführen, dass HDDs den R / W-Kopf physisch auf die gewünschte Spur bewegen müssen und dann warten müssen, bis sich die gewünschten Daten unter dem Kopf drehen, während SSDs keine beweglichen Teile haben.

Unsere Kompilierzeiten haben sich wesentlich dramatischer verbessert, als ein einfacher Vergleich der maximalen Durchsätze nahelegen würde. Builds, die zuvor über 30 Minuten gedauert haben, sind nun in etwa einer Minute fertig, da die Festplatten-I / O während eines großen Builds aus vielen separaten Quelldateien besteht, die nicht einzeln sehr groß sind und physisch auf der gesamten Festplatte verteilt sein können .

Indem Sie sowohl den Durchsatz als auch die IOPS-Nummern bereitstellen, können Sie eine bessere Vorstellung davon erhalten, wie sich eine bestimmte Auslastung auf einem bestimmten Speichergerät auswirkt. Wenn Sie nur große Datenmengen streamen, die nicht fragmentiert sind, werden Sie dem maximalen Durchsatz ziemlich nahe kommen. Wenn Sie jedoch viele kleine Lesevorgänge und / oder Schreibvorgänge durchführen, die nicht sequenziell auf der Festplatte gespeichert sind, werden Sie durch IOPS eingeschränkt.


6
2018-05-24 00:31



Hast du nicht auch die IOPS gemessen? - mFeinstein


Um eine IO-Operation durchzufü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.
  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, aber die für 1 und 2 benötigte Zeit ist unabhängig von der Größe der Anfrage.

Die Headline-Durchsatz- und IOP-Werte stellen Extremfälle dar. Die Headline-Throgput-Zahlen stellen den Fall dar, bei dem jede Operation einen großen Datenblock umfasst, so dass das Laufwerk die meiste Zeit damit verbringt, Daten tatsächlich zu bewegen.

Die Headline-IOPs stellen den Fall dar, in dem die Datenblöcke sehr klein sind, so dass 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 ausreichend klein, so dass die Anzahl der zu übertragenden Blöcke viel wichtiger ist als die Größe der Blöcke.


3
2018-05-23 15:50





Es gibt zwei Arten von Engpässen, die bei IO-Volumes (oder IO im Allgemeinen) auftreten können.

Die tatsächliche Leistung wird in der Tat gemessen, um eine Komponente basierend auf der Menge der bewegten Daten, skaliert durch die verfügbare Bandbreite oder ähnliche, unitcost * -Größe, aufzuweisen, aber es ist auch ein mit Anfragen verbundener Overhead, der konstant ist, egal ob Platte, Netzwerk oder zahlreiche andere Dinge.

Stückkosten * Größe + Zuschlag. die Gleichung einer Linie.

Wenn die Uncost groß ist oder die Größe groß ist, dann ist es sinnvoll, auf diese Volumes, wie zum Beispiel Mobiltelefonnetzwerke, aufzuladen, auf der anderen Seite sind die Overheads manchmal viel kritischer.

Sie können selbst ein einfaches Experiment durchführen, ein Verzeichnis mit ein paar 1GB-Dateien erstellen (oder was auch immer praktisch ist, etwas, das groß genug ist, um mehrere Sekunden zu lesen / schreiben) und dann einen Ordner mit einer Million 100-Byte-Dateien erstellen (Beachten Sie, das sind 0,1 GB Daten), und dann sehen Sie, was mit Ihrem Durchsatz passiert, wenn Sie versuchen, all diese Dinge zwischen verschiedenen Partitionen / Festplatten zu verschieben - Sie werden Leistung durch den Durchsatz für die großen Dateien gedrosselt und gedrosselt von die Anzahl der Dateien für die kleineren Sachen.

Ich würde annehmen, dass amazon beide Lademodelle kennen und einfach gefunden haben, dass ein besser die Fähigkeiten ihrer Infrastruktur darstellt.

Es gibt ein Limit für die Größe eines IOPs, das im Großen und Ganzen mit der Menge verbunden ist, die der Store sowieso in einem "Zyklus" übertragen kann. Große Anfragen verursachen daher immer noch mehrere IOPS.

Es gibt ein schönes Stück hier von Amazon selbst über IOPS und Kosten und "Einsparungen", die sie durch Optimierungen weitergeben

E / A-Merkmale und Überwachung

Nicht alles lesen, aber es sieht interessant aus, wenn Sie neugierig auf dieses Gebiet sind.


2
2018-05-22 22:27





Beantworten Sie Ihre Frage

"Welche neue Information bekomme ich, wenn ich eine IOPS-Nummer sehe, dass ich keine Durchsatzrate (MB / s) sehen würde?"

direkt ist es Wie viele IO-Vorgänge der angegebenen Warteschlangentiefe und Dateigröße kann der Speicher pro Sekunde ausführen. Sie können den Durchsatz zu bestimmten Bedingungen mit folgender Formel berechnen:

IOPS * Dateigröße = Durchsatz

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

Die beste Möglichkeit, die Leistung eines Speichers zu bewerten, besteht darin, IOPS- und Durchsatztests bei verschiedenen Blockgrößen und Warteschlangentiefen durchzuführen.


2
2018-05-24 15:50



Ich glaube du verwechselst IOPS mit Durchsatz etwas ... Durchsatz ist auch kein Synonym für Dauerzugriff, sondern die gesamten MB / s die der Speicher zu einem bestimmten Zeitpunkt verarbeiten konnte .... Also wenn du die HDD sagst und die SSD würde den gleichen Durchsatz haben, es ist für den kontinuierlichen Zugriff ... Da es auch einen Durchsatz für den wahlfreien Zugriff gibt ... nur sehr viel weniger für HDDs im allgemeinen wegen der Suchzeit. - mFeinstein
Sie sollten also in Ihrer Antwort darauf hinweisen, dass Sie auf kontinuierlichen Zugriff am Anfang und auf zufälligen Zugriff am Ende verweisen, da IOPS auch nicht auf wahlfreien Zugriff steht ... Gerade wenn es sinnvoller ist, IOPS als Messung - mFeinstein
@mFeinstein Ich habe die Antwort bearbeitet, schau mal rein. - Eugene


Im Allgemeinen ist IOPS schwieriger zu erhalten als der Durchsatz. Wenn Sie viele IOPS haben, haben Sie meistens 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 schrecklich langsam. SSDs haben eine viel bessere IOPS-Kapazität.

Wenn Sie nur einen Benutzer haben, der eine große Datei in das Netzwerk kopiert, haben Sie möglicherweise nur ein Dutzend Suchen, um die Daten zu erhalten, und der Rest wird nur von der Festplatte streamen.

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

Wenn nur 10 Zeilen parallel in einer relationalen Datenbank aktualisiert werden, können Hunderte von IOs generiert werden: Lesen der Indizes, Lesen der Daten, Anhängen der Logdatei, Aktualisieren der Indizes und der Daten. Die meisten Betriebssysteme und Datenbanken versuchen sehr stark, die Anzahl der IOs durch Caching und Verzögern / Gruppieren der IOs wenn möglich zu begrenzen.


1
2018-05-23 07:57





Ich werde auch meine eigene Frage beantworten, weil ich denke, dass die meisten Antworten sehr vom Thema abweichen und die Antwort viel einfacher sein könnte:

Wenn Sie nur den Durchsatz Ihres Speichergeräts betrachten, verpassen Sie möglicherweise, was passiert ... Wenn der Durchsatz gering ist (niedriger MB / s), haben Sie möglicherweise ein langsames Gerät ODER eine große Anzahl von wahlfreien Zugriffen auf einer Festplatte oder einem anderen Gerät das behandelt den wahlfreien Zugriff nicht gut.

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

Wenn Sie sich also hohe IOPS ansehen, können Sie daraus schließen, dass Ihr Speichergerät viele zufällige Zugriffe verarbeitet, selbst wenn dies mit geringem Durchsatz verbunden ist ... oder Sie suchen nach niedrigen IOPS, die den gleichen niedrigen Durchsatz haben, was bedeutet, dass Ihr Gerät einfach ist Leerlauf.

Wenn wir also die IOPS betrachten, können wir einen Einblick gewinnen, was der Durchsatz eigentlich bedeutet, sie ergänzen sich gegenseitig.


1
2018-05-24 18:22



IOPS = Inputs / Outputs pro Sekunde, es geht nicht um Plural, und Trailing S sollte nicht weggelassen werden. :) - Eugene
Es geht nicht um Plural, ich habe einige Leute gesehen, die sich auf IOP als eine Abkürzung für "I / O OPeration" beziehen, wie es sich anhört ... Aber ja, das könnte zu Verwirrung führen, also werde ich es ersetzen, danke - mFeinstein