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.