Wie man die Festplattenleistungskennzahlen (IOPS und Latenz) unter Linux überwacht

Die Performance Ihrer Festplatte oder Ihres Speichersystems unter Linux zu ermitteln, kann ziemlich knifflig sein, insbesondere wenn Sie sich vor dem Start rechenintensiver Workloads ein klares Bild verschaffen möchten. Manchmal scheint Ihre Konfiguration in Ordnung zu sein, bis Sie Benchmarks durchführen und feststellen, wie schlecht die IOPS oder die Latenz tatsächlich sind. Dieser Artikel bietet Ihnen praxisnahe Methoden zur Leistungsmessung – damit Sie wissen, was Ihr Speicher wirklich leisten kann. Ob Sie nun überprüfen möchten, ob Ihre SSDs die beworbene Leistung erbringen oder ob Ihr RAID-System optimiert werden muss – diese Methoden ersparen Ihnen viel Rätselraten. Zugegeben, die Kommandozeile mag anfangs etwas einschüchternd wirken, aber sobald Sie sich damit vertraut gemacht haben, lassen sich problemlos aussagekräftige Benchmarks durchführen, deren Ergebnisse die tatsächliche Leistung Ihres Systems widerspiegeln.

Wie man Speicherleistung und Latenz unter Linux misst

Verwendung von FIO (Flexible I/O) für Festplatten-Benchmarks

FIO ist das Standardtool zum Testen von Festplatten-IOPS, da es reale Arbeitslasten sehr gut simulieren kann. Es ist auf den meisten Linux-Distributionen verfügbar, muss aber manchmal manuell installiert werden. Unter RHEL oder CentOS muss möglicherweise zuerst das EPEL-Repository aktiviert werden ( yum install epel-release -y ), bevor fio installiert werden kann. Unter Debian/Ubuntu genügt apt-get install fio. Nach der Installation wählen Sie die zu testende Festplatte oder Partition aus. Normalerweise mounten Sie Ihre Festplatte oder LUN einfach in einem Verzeichnis und führen die fio-Befehle in diesem Verzeichnis aus.

Warum es hilfreich ist: Es simuliert Lese- und Schreibvorgänge mit spezifischen Blockgrößen, Thread-Tiefen und Mischungen und vermittelt Ihnen so einen recht guten Eindruck von der Leistungsfähigkeit des Speichers. Wenn Sie einen typischen Befehl wie den folgenden ausführen:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75

Im Grunde fordern Sie fio auf, zufällige Lese-/Schreibtests mit 4-KB-Blöcken, einer Warteschlangenlänge von 64 und einer 8-GB-Datei durchzuführen. Erwarten Sie Ergebnisse wie die folgenden:

  • Lesegeschwindigkeit: 3280 MiB/s, IOPS rund 83.000
  • Schreibgeschwindigkeit: 110 MiB/s, IOPS nahe 28.000

Diese Art von Ausgabe ist äußerst hilfreich. Bei SSDs sind die Werte deutlich höher als bei herkömmlichen Festplatten, aber auch bei SATA-Laufwerken erhält man einen guten Ausgangswert. Manchmal führt man denselben Test nur mit Lese- —readwrite=randreadoder Schreibvorgängen durch randwrite, um die Stärken der jeweiligen Datenträger zu ermitteln. Wichtig: Bei einem eingebundenen Dateisystem werden Cache-Effekte und andere Systemaktivitäten nicht erfasst, daher können die Ergebnisse von Durchlauf zu Durchlauf leicht variieren. Am besten führt man den Test mehrmals durch und bildet den Durchschnitt.

Testen mit FIO-Konfigurationsdateien

Da das Eintippen langer Befehle im laufenden Betrieb mühsam sein kann, hilft die Erstellung einer Konfigurationsdatei bei der Automatisierung und Wiederholbarkeit von Tests. Erstellen Sie einfach eine Datei, z. B.read.fio, in Ihrem Ordner und fügen Sie folgenden Inhalt hinzu:

[global] rw=randread size=8G filename=/path/to/your/mount/point/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgread] rw=randread iodepth=64

Ersetzen Sie `/path/to/your/mount/point` durch Ihr tatsächliches Verzeichnis. Führen Sie anschließend `fio read.fio` aus, um die Lesegeschwindigkeit zu testen. Das gleiche Vorgehen gilt für Schreibtests; ändern Sie einfach die Einstellungen rw=randwriteim globalen Abschnitt. So lassen sich reproduzierbare Benchmarks erstellen, ohne jedes Mal alle Optionen neu eingeben zu müssen.

Messung der Festplattenlatenz mit Ioping

IOPS sind zwar gut, aber manchmal ist die Dauer einzelner Anfragen noch wichtiger. Hier kommt ioping ins Spiel. Sie denken vielleicht, Ihre Festplatte ist schnell, erhalten aber unter Last trotzdem verzögerte Antworten – und das liegt oft eher an der Latenz als am Durchsatz. Installieren Sie es mit yum oder apt-get. Unter RHEL/CentOS:

# yum install ioping -y

Und für Debian/Ubuntu:

# apt-get install ioping

Führen Sie einen Schnelltest auf Ihrer Festplatte durch:

# ioping -c 20 /tmp/

Die Ausgabe zeigt die Anfragezeiten in Mikrosekunden ( µs ) oder Millisekunden ( ms ).Je niedriger, desto besser – idealerweise unter 1 ms für eine gute SSD. Ein typisches Beispiel könnte so aussehen:

4 KiB <<< /tmp/ (ext4 /dev/sda1): request=1 time=1.55 ms...19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us

Die wichtigste Kennzahl ist die durchschnittliche Latenz – in diesem Fall etwa 0, 3 ms, was für Backend-Speicherung hervorragend ist. Zur Erinnerung: Um Millisekunden zu erhalten, teilen Sie Mikrosekunden durch 1000, falls Sie die Verzögerung schnell abschätzen möchten.

Diese Art von Test ist nicht perfekt – die Leistung von Festplatten kann je nach Auslastung, laufenden Prozessen usw.variieren. Eine kurze Überprüfung im Vorfeld kann jedoch viel darüber aussagen, ob Ihre Konfiguration für den Produktiveinsatz bereit ist oder noch optimiert werden muss.

Ja, Linux bietet diese Tools, die zunächst etwas undurchsichtig wirken, aber mit etwas Geduld viel über die tatsächliche Leistung Ihres Speichers verraten. Wundern Sie sich nur nicht, wenn die Ergebnisse etwas schwanken oder einige Befehle je nach Ihrer Konfiguration angepasst werden müssen – denn Linux muss die Dinge manchmal etwas komplizierter gestalten.