IOPS (Input/Output Operations Per Second) ist die Anzahl der Lese- und Schreibvorgänge, die eine Festplatte in einer Sekunde ausführen kann. Je höher die IOPS, desto schneller laufen Anwendungen, die häufig in kleinen Datenportionen auf die Festplatte zugreifen.
Für eine einfache Visitenkarten-Website spielen IOPS kaum eine Rolle, bei Datenbanken und stark ausgelasteten Diensten werden sie dagegen oft früher zum Engpass als Prozessor oder Arbeitsspeicher.
Wofür IOPS wichtig sind
Hohe IOPS sind vor allem für Aufgaben mit vielen kleinen Zugriffen auf die Festplatte wichtig:
- Datenbanken wie MySQL, PostgreSQL und MongoDB;
- stark ausgelastete Webserver und Onlineshops;
- Mailserver;
- Caching- und Warteschlangensysteme.
Für Video-Streaming, Backups und die Verteilung großer Dateien zählt weniger die IOPS-Zahl als die lineare Lese- und Schreibgeschwindigkeit, denn die Daten fließen dort in einem durchgehenden Strom.
Wovon IOPS abhängen
Das Ergebnis hängt von drei Hauptfaktoren ab.
Art des Datenträgers
NVMe-Laufwerke liefern um ein Vielfaches mehr IOPS als gewöhnliche SATA-SSDs und ungleich mehr als klassische HDD-Festplatten. Auf den Servern von F3 Cloud kommen NVMe-SSDs zum Einsatz.
Blockgröße
Je kleiner der Block, desto mehr Vorgänge passen in eine Sekunde. Deshalb misst man die maximalen IOPS mit einem Block von 4 KB, das ist die typische Größe eines Datenbankzugriffs.
Zugriffsmuster
Zufällige Zugriffe, kreuz und quer über die ganze Festplatte verteilt, sind aufwendiger als sequenzielle. Datenbanken erzeugen genau diese zufällige Last.
Backups und Streaming erzeugen sequenzielle Last.
Zwei verschiedene Zahlen
IOPS und die lineare Geschwindigkeit in MB/s messen Unterschiedliches. Eine Festplatte kann beim sequenziellen Lesen eine enorme Geschwindigkeit erreichen und bei zufälligen kleinen Vorgängen deutlich weniger IOPS liefern. Wenn Sie einen Server für eine Datenbank auswählen, achten Sie genau auf die zufälligen IOPS mit einem Block von 4 KB.
IOPS in Linux messen
Zum Messen verwendet man das Werkzeug fio. Installieren Sie es.
apt update && apt install -y fiodnf install -y fioDer Test legt eine temporäre Datei an
fio schreibt eine Datei der angegebenen Größe auf die Festplatte, in den Beispielen unten sind das 2 GB. Achten Sie darauf, dass genug freier Speicher vorhanden ist, und starten Sie den Test in einem Arbeitsordner, zum Beispiel in /root. Löschen Sie nach dem Test die Datei fiotest.
Messen Sie die zufälligen Lese-IOPS. Das ist die wichtigste Zahl für Datenbanken.
fio --name=randread --filename=fiotest --ioengine=libaio --direct=1 \
--rw=randread --bs=4k --iodepth=32 --numjobs=1 --size=2G \
--runtime=60 --time_based --group_reportingDie Optionen des Befehls im Einzelnen:
--rw=randread– zufälliges Lesen. Für Schreiben verwenden Sierandwrite, für gemischte Lastrandrw;--bs=4k– Blockgröße von 4 KB;--direct=1– am Cache vorbei lesen, damit Sie die echte Leistung der Festplatte sehen und nicht die des Arbeitsspeichers;--iodepth=32– wie viele Anfragen gleichzeitig in der Warteschlange gehalten werden;--runtime=60 --time_based– der Test läuft genau 60 Sekunden.
Ergebnis richtig lesen
Suchen Sie in der Ausgabe von fio die Zeile, die mit read oder write beginnt. Der erste Wert darin sind die IOPS.
read: IOPS=85.2k, BW=333MiB/s (349MB/s)IOPS=85.2k ist genau die Anzahl der Vorgänge pro Sekunde.BW ist die lineare Geschwindigkeit im selben Zeitraum.
Weiter unten zeigt fio im Block lat die Latenz. Je niedriger sie ist, desto schneller reagiert die Festplatte.
Was Sie sich noch ansehen können
Um die aktuelle Last auf der Festplatte schnell einzuschätzen, ohne einen Test zu starten, hilft iostat aus dem Paket sysstat.
# Installieren, falls das Paket noch fehlt
apt install -y sysstat
# Statistik jede Sekunde aktualisieren, die Spalten r/s und w/s sind Vorgänge pro Sekunde
iostat -dx 1So sehen Sie in den Spalten r/s und w/s die tatsächliche Last durch Ihre Anwendungen und in der Spalte %util, wie stark die Festplatte ausgelastet ist.
Unsere Ressourcen
Telegram-Kanal: https://t.me/f3cloud_news
Hosting-Website: https://f3cloud.com