vmstat

Raportuje statystyki pamięci wirtualnej, procesów, CPU i operacji I/O.

vmstat (Virtual Memory Statistics) to jedno z najszybszych narzędzi diagnostycznych w Linuksie. Jednym poleceniem dostajesz zbiorczy raport o pamięci wirtualnej, procesach w kolejce, aktywności CPU, swapowaniu i operacjach I/O na blokach. Kiedy serwer nagle zwalnia, a Ty nie wiesz, czy to brak RAM-u, przeciążony procesor, czy dysk dławiący się zapisami, vmstat odpowiada na to pytanie w sekundę. Pochodzi z pakietu procps-ng, więc znajdziesz go praktycznie na każdej dystrybucji.

Składnia i najważniejsze opcje

Podstawowa forma: vmstat [opcje] [interwał [liczba]]. Jeśli podasz interwał (w sekundach), vmstat będzie odświeżał raport w kółko; dodatkowo liczba ogranicza ile razy ma to zrobić.

  • -a — pokazuje pamięć aktywną i nieaktywną zamiast kolumn buff/cache.
  • -s (albo --stats) — wypisuje jedną dużą tabelę z podsumowaniem pamięci i licznikami od startu systemu, zamiast trybu tabelarycznego.
  • -d — tryb dyskowy: statystyki odczytów i zapisów dla każdego dysku osobno.
  • -p urządzenie — statystyki dla konkretnej partycji, np. -p /dev/sda1.
  • -S jednostka — zmienia jednostkę wyświetlania (k, K, m, M); domyślnie kilobajty (K = 1024).
  • -w — szeroki układ (wide), czytelniejszy przy dużych wartościach na serwerach z dużym RAM-em.
  • -t — dokleja znacznik czasu do każdego wiersza, przydatne przy logowaniu.
  • -f — liczba forków od startu systemu (fork, vfork, clone).

Przykłady użycia

  • vmstat — jednorazowa migawka: średnie od uruchomienia systemu. Dobre na start, ale mało miarodajne.
  • vmstat 2 — odświeża raport co 2 sekundy, aż go przerwiesz (Ctrl+C). Tak podglądasz system na żywo.
  • vmstat 1 5 — pięć próbek co sekundę i koniec. Idealne do szybkiego pomiaru pod obciążeniem.
  • vmstat -s -S M — pełne podsumowanie pamięci w megabajtach, wygodne do raportu.
  • vmstat -d 5 — statystyki dyskowe odświeżane co 5 sekund; sprawdzisz, który dysk się dławi.

Częste błędy i pułapki

Największa pułapka: pierwszy wiersz to średnie od bootu, a nie stan bieżący. Jeśli patrzysz na jeden odczyt bez interwału, oglądasz historię serwera, a nie to, co dzieje się teraz. Zawsze podawaj interwał i ignoruj pierwszy wiersz.

Kolumna si/so (swap in/out) uparcie różna od zera to sygnał, że brakuje RAM-u i system zaczyna swapować, a nie jednorazowy wypadek. Z kolei wysokie wa (I/O wait) w sekcji CPU oznacza, że procesor czeka na dysk, nie że jest przeciążony obliczeniami. -m (slabinfo) wymaga dostępu do /proc/slabinfo, więc bez roota zwykle dostaniesz błąd. Uważaj też, że część flag i formatów różni się między procps-ng na Linuksie a wersjami na BSD/AIX — składnia nie jest w pełni przenośna.

Powiązane komendy: free, top, htop, iostat, mpstat, sar, dstat.