# 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.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/vmstat/

<!-- PROSE:intro -->
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.
<!-- PROSE:intro:end -->

## Grundlegende Nutzung

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

```bash
vmstat
```

`vmstat INTERVAL` — Zeigt fortlaufend alle INTERVAL Sekunden aktualisierte Statistiken.

```bash
vmstat 1
```

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

```bash
vmstat 1 10
```

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

```bash
vmstat -w 1
```

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

```bash
vmstat -t 1
```

## Speicherstatistik

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

```bash
vmstat -s
```

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

```bash
vmstat -S M 1
```

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

```bash
vmstat -S k 1
```

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

```bash
vmstat -a 1
```

## Festplattenstatistik

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

```bash
vmstat -d
```

`vmstat -D` — Zeigt eine zusammengefasste Festplattenstatistik.

```bash
vmstat -D
```

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

```bash
vmstat -p sda1
```

## Weitere Optionen

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

```bash
vmstat -f
```

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

```bash
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.

```bash
vmstat -w 1
```

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

```bash
vmstat -S M -w 1
```

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

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

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

```bash
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.

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

<!-- PROSE:outro -->
## 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`.

## Weiterführende Links

- [ubuntuusers-Wiki: Systemüberwachung](https://wiki.ubuntuusers.de/Systemüberwachung/) – deutschsprachiger Überblick über Werkzeuge zur Systemüberwachung unter Linux
- [manpages.debian.org: vmstat(8)](https://manpages.debian.org/bookworm/procps/vmstat.8.en.html) – offizielle Handbuchseite aus dem Paket procps
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [iostat](https://www.jpkc.com/db/cheatsheets/shell-system/iostat/) – Festplatten- und I/O-Auslastung pro Gerät im Detail
- [free](https://www.jpkc.com/db/cheatsheets/shell-system/free/) – freien und belegten Arbeitsspeicher schnell anzeigen
- [top](https://www.jpkc.com/db/cheatsheets/shell-system/top/) – Prozesse und Ressourcenverbrauch in Echtzeit beobachten

