vmstat — Speicher, Swap und CPU live überwachen

Praxis-Guide zu vmstat: Speicher, Swap, I/O-Wait und CPU-Last im Sekundentakt überwachen und Engpässe früh erkennen.

vmstat (Virtual Memory Statistics) liefert dir in einer einzigen, kompakten Zeile den Puls deines Linux-Systems: Prozess-Queues, Speicher, Swap, Block-I/O und CPU-Auslastung auf einen Blick. Das Werkzeug gehört zum Paket procps-ng und ist ein reines Lese-Kommando – ideal, um Speicherdruck, Swapping oder I/O-Engpässe schnell aufzuspüren. Wichtig: Rufst du vmstat mit einem Intervall auf (z. B. vmstat 2), zeigt die erste Zeile den Durchschnitt seit dem Systemstart – erst ab der zweiten Zeile zählen die aktuellen Werte.

Grundlegende Nutzung

vmstat — Zeigt eine einzelne Momentaufnahme der Systemstatistik seit dem Systemstart.

vmstat

vmstat INTERVAL — Zeigt fortlaufend alle INTERVAL Sekunden aktualisierte Statistiken.

vmstat 1

vmstat INTERVAL COUNT — Zeigt die Statistik alle INTERVAL Sekunden, insgesamt COUNT Mal.

vmstat 1 10

vmstat -w — Breite Ausgabe – breitere Spalten für große Werte.

vmstat -w 1

vmstat -t — Hängt an jede Zeile einen Zeitstempel an.

vmstat -t 1

Speicherstatistik

vmstat -s — Zeigt ausführliche Speicherstatistiken in Tabellenform.

vmstat -s

vmstat -S M — Zeigt Werte in Megabyte statt Kilobyte.

vmstat -S M 1

vmstat -S k — Zeigt Werte in Kilobyte (Standard).

vmstat -S k 1

vmstat -a — Zeigt aktiven und inaktiven Speicher statt Puffer und Cache.

vmstat -a 1

Festplattenstatistik

vmstat -d — Zeigt Festplattenstatistiken: Lese-/Schreibvorgänge und I/O-Zeit pro Gerät.

vmstat -d

vmstat -D — Zeigt eine zusammengefasste Festplattenstatistik.

vmstat -D

vmstat -p PARTITION — Zeigt die Statistik für eine bestimmte Partition.

vmstat -p sda1

Weitere Optionen

vmstat -f — Zeigt die Anzahl der Forks (Prozesserzeugungen) seit dem Systemstart.

vmstat -f

vmstat -n — Gibt die Kopfzeile nur einmal aus (nicht periodisch). Praktisch fürs Logging.

vmstat -n 1 60 > vmstat.log

Ausgabespalten erklärt

r (procs) — Anzahl lauffähiger Prozesse (warten auf die CPU). Hohe Werte = CPU-Engpass.

b (procs) — Anzahl der Prozesse im ununterbrechbaren Schlaf (meist I/O-wartend).

swpd (memory) — Menge des genutzten Swap-Speichers (KB). Ungleich null = Speicherdruck.

free (memory) — Menge des freien/ungenutzten Speichers (KB).

buff (memory) — Als Kernel-Puffer genutzter Speicher (KB).

cache (memory) — Als Page-Cache genutzter Speicher (KB).

si (swap) — Pro Sekunde von der Platte eingelagerter Speicher (KB/s). Ungleich null = aktives Swapping.

so (swap) — Pro Sekunde auf die Platte ausgelagerter Speicher (KB/s). Anhaltend ungleich null = Speicherdruck.

bi (io) — Pro Sekunde von Blockgeräten empfangene Blöcke.

bo (io) — Pro Sekunde an Blockgeräte gesendete Blöcke.

in (system) — Interrupts pro Sekunde.

cs (system) — Kontextwechsel pro Sekunde.

us (cpu) — Zeitanteil im User-Code (%).

sy (cpu) — Zeitanteil im Kernel-/System-Code (%).

id (cpu) — Leerlaufzeit (%). Niedrig = CPU ausgelastet.

wa (cpu) — Zeit im Warten auf I/O (%). Hoch = I/O-Engpass.

st (cpu) — Von der Hypervisor-Schicht „gestohlene“ Zeit (%). Ungleich null = Ressourcenkonkurrenz in der VM.

Typische Muster

vmstat -w 1 — Echtzeit-Systemüberblick mit breiten Spalten. Der Standardbefehl.

vmstat -w 1

vmstat -S M -w 1 — Echtzeit-Überwachung mit Werten in Megabyte.

vmstat -S M -w 1

vmstat 1 | awk '$7 > 0 || $8 > 0' — Beobachtet Swap-Aktivität (Spalten si/so ungleich null).

vmstat 1 | awk '$7 > 0 || $8 > 0'

vmstat -n -t 1 3600 > vmstat.log — Protokolliert die Systemstatistik eine Stunde lang (1 Messung/Sek.).

vmstat -n -t 1 3600 > vmstat.log

vmstat 1 | awk 'NR>2 && $1>4 {print "CPU overloaded: r="$1}' — Warnt, wenn die Zahl lauffähiger Prozesse die CPU-Anzahl übersteigt.

vmstat 1 | awk 'NR>2 && $1>4 {print "CPU overloaded: r="$1}'

Fazit

vmstat ist eines der schnellsten Diagnosewerkzeuge überhaupt: ein Befehl, eine Zeile, und du weißt, ob dein System unter Speicher-, CPU- oder I/O-Druck steht. Merke dir die Schlüsselspalten: anhaltend positive si/so bedeuten echten Speicherdruck durch Swapping, eine dauerhaft hohe r-Queue deutet auf CPU-Mangel und hohe wa-Werte auf einen I/O-Engpass hin. Nutze immer ein Intervall wie vmstat 2 und ignoriere die erste Zeile, da sie nur den Durchschnitt seit dem Boot zeigt. Für Details zu einzelnen Geräten oder Prozessen kombinierst du vmstat mit iostat, free und top.

Verwandte Kommandos

  • iostat – Festplatten- und I/O-Auslastung pro Gerät im Detail
  • free – freien und belegten Arbeitsspeicher schnell anzeigen
  • top – Prozesse und Ressourcenverbrauch in Echtzeit beobachten