Zum Inhalt springen

iostat - CPU- und Disk-I/O-Statistik-Spickzettel

iostat - CPU- und Disk-I/O-Statistik-Spickzettel

iostat meldet CPU-Auslastung und pro-Device-Disk-I/O-Statistiken — Durchsatz, IOPS, Request-Latenz und Queue-Tiefe. Es ist der Standard-Erste-Halt zur Diagnose von Speicher-Engpässen auf Linux: Ist die Disk gesättigt, Werden Requests in die Warteschlange eingereiht, Spitzt sich die Latenz? Es wird als Teil des sysstat-Pakets zusammen mit mpstat, pidstat und sar versendet.

Installation

PlattformBefehl
Debian/Ubuntusudo apt install sysstat
Fedora/RHELsudo dnf install sysstat
Arch Linuxsudo pacman -S sysstat
macOSiostat ist eingebaut (andere Ausgabe)
Verifiziereniostat -V

Grundlegende Nutzung

BefehlBeschreibung
iostatEin Report seit dem Boot (CPU + Devices)
iostat 2Aktualisiere alle 2 Sekunden
iostat 2 55 Reports, 2 Sekunden auseinander
iostat -xErweiterte Stats (die nützlichen)
iostat -dNur Device-Stats (kein CPU)
iostat -cNur CPU-Stats

Der Befehl, den du tatsächlich möchtest

# Erweitert, Human-Readable, pro-Device, alle 2s
iostat -xmt 2
FlagEffekt
-xErweiterte Statistiken (util%, await, aqu-sz, …)
-mBericht in MB/s (verwende -k für KB/s)
-tTimestamp mit jedem Report drucken
-p DEVPartitionen eines Devices anzeigen (z.B. -p sda)
-d 2Device-Report alle 2 Sekunden
-hHuman-Readable, NVMe-freundliche Formatierung

Erweiterte Ausgabe lesen (-x)

SpalteBedeutung
r/s, w/sRead/Write-Requests pro Sekunde (IOPS)
rMB/s, wMB/sRead/Write-Durchsatz
rareq-sz / wareq-szDurchschnittliche Request-Größe
r_await, w_awaitDurchschn. Read/Write-Latenz (ms) — Schlüssel-Metrik
aqu-szDurchschnittliche Queue-Tiefe (Requests im Flug)
%utilBruchteil der Zeit, in der das Device beschäftigt war

Signale interpretieren

BeobachtungInterpretation
%util nahe 100%Device ist gesättigt (Vorsicht auf SSD/NVMe — kann parallelisieren)
Hoher await (Zehntel ms+)Requests sind langsam — Latenz-Engpass
Hoher aqu-szRequests stapeln sich schneller als die Disk sie entwässert
Hohe IOPS, niedriger DurchsatzKleine zufällige I/O (typische DB/Metadata-Last)
Niedrige IOPS, hoher DurchsatzGroße sequenzielle I/O (Backups, Streaming)

Auf moderner SSD/NVMe kann %util 100% lesen, während das Device noch Kopfraum hat (es bedient Requests parallel). Vertraue await und aqu-sz mehr als %util dort.

CPU-Sektion

FeldBedeutung
%user / %niceZeit im Benutzer-Space
%systemZeit im Kernel
%iowaitCPU-Idle warten auf I/O (Speicher-Druck-Hinweis)
%stealZeit vom Hypervisor gestohlen (laute Nachbarn)
%idleLeerlauf-Zeit

Hoher %iowait neben hohem Disk-await zeigt direkt, dass Speicher der Engpass ist.

Häufige Workflows

# Beobachte einen verdächtigen Disk-Engpass live
iostat -xmt 2

# Konzentriere dich auf ein Device und seine Partitionen
iostat -xmt -p nvme0n1 2

# Korreliere CPU-Iowait mit Device-Latenz während eines Load-Tests
iostat -xmt 1 60 > iostat.log

iostat im Vergleich zu verwandten Tools

ToolFokus
iostatPro-Device-I/O + CPU-Stats
iotopWelcher Prozess macht die I/O
dstat/doolKombinierte CPU/Disk/Net in einer Ansicht
sarHistorische/aufgezeichnete Systemaktivität

Verwende iostat, um zu sehen, dass das Device langsam ist, dann iotop, um zu sehen, welcher Prozess verantwortlich ist.

Ressourcen