Skip to main content

Monitorowanie zasobów: free, vmstat, iostat, sara

Monitorowanie dostępnej pamięci jest kluczowe dla stabilności systemu. Przy administracji serwerami, maszyn wirtualnych czy  serwerów ważne jest zrozumienie jak Linux alokuje i zarządza pamięcią.

Komenda free – stan pamięci teraz

free

image.png

Wyświetla podsumowanie zużycia RAM i swap. Domyślnie w kilobajtach (KB).

free -h

Format czytelny (B, KB, MB, GB). Najczęściej stosowana opcja.

image.png

free -m

image.png

Wynik w megabajtach.

free -g

image.png

Wynik w gigabajtach (przydatne na dużych serwerach).

free -w

Rozszerzony format z osobną kolumną na bufory i cache.

image.png

Interpretacja wyniku free -h:

 total used free shared buff/cache available Mem: 15.6G 8.2G 2.1G 0.5G 5.3G 7.4G Swap: 4.0G 0.5G 3.5G

image.png

  • total – całkowita pamięć RAM
  • used – faktycznie używana pamięć
  • free – zupełnie wolna (często mała, bo Linux używa cache)
  • buff/cache – bufory i cache (mogą być zwolnione, jeśli trzeba)
  • available – pamięć dostępna do użytku dla aplikacji (ważna liczba!)

Monitorowanie pamięci w czasie rzeczywistym

free -h -s 2

Wyświetla stan pamięci co 2 sekundy.

image.png

free -h -s 2 -c 10

Monitoruje co 2 sekundy, 10 razy.

image.png

watch -n 1 'free -h'

Monitorowanie pamięci co sekundę w atrakcyjnym formacie (wymaga pakietu watch).

image.png

Komenda vmstat – Virtual Memory Statistics

Wprowadzenie do vmstat:

Bardziej zaawansowana niż free, pokazuje statystyki pamięci wirtualnej, I/O i swap activity.

vmstat

image.png

Jednorazowy raport.

vmstat 2 5

Raport co 2 sekundy, 5 razy.

image.png

Interpretacja wyniku:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 2048000 51200 5242880 0 0 2 1 50 30 25 5 70 0 0

image.png

  • r – procesy czekające na CPU
  • b – procesy w I/O wait
  • swpd – swap w użyciu (MB)
  • free – wolna pamięć
  • si/so – swap in/out (jeśli > 0, system ma problemy z pamięcią)
  • id – % czasu CPU bezczynny (wysoki = dobry, niski = CPU obciążony)
  • wa – % czasu czekania na I/O (wysokie wartości = problemy z dyskiem)

Komenda iostat – I/O Statistics

iostat monitoruje aktywność dysków i procesorów. Wymaga pakietu sysstat.

iostat

Ogólne statystyki od ostatniego restartu systemu.

image.png

iostat -x 2 5

Rozszerzone statystyki dysku, co 2 sekundy, 5 razy.

image.png

Interpretacja wyniku:

Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz %util sda 10.5 5.2 0.50 0.25 0.5 1.2 5% 10% 2.5ms 5.0ms 0.08 8.5%

image.png

  • r/s – read operations per second
  • w/s – write operations per second
  • rMB/s / wMB/s – megabajty czytane/zapisywane na sekundę
  • %util – procent wykorzystania dysku (>80% = problem)
  • r_await / w_await – średni czas oczekiwania operacji (wysoki = wolny dysk)

Komenda sar – System Activity Reporter

sar z pakietu sysstat to kompleksowe narzędzie do monitorowania systemu. Może zbierać dane historyczne.

sar -u 2 5

image.png

Statystyki CPU co 2 sekundy, 5 razy.

sar -r 2 5

image.png

Statystyki pamięci.

sar -d 2 5

image.png

Statystyki dysków (podobnie jak iostat).

image.png

sar -b 2 5

I/O i przełączenia stron (page faults).

image.png

Monitorowanie swap activity – problem w systemach

vmstat 1 | grep -v procs | awk '$7 > 0 || $8 > 0 { print "SWAP AKTYWNY!", $0 }'

Ostrzeżenie gdy system zaczyna pisać do swap (si/so > 0 to problem!).

watch -n 1 'vmstat 1 2 | tail -1'

Ciągłe monitorowanie najnowszych danych vmstat.

Praktyczne problemy z pamięcią i jak je diagnozować

Problem: System powolny, dużo swap activity

# 1. Sprawdź dostępną pamięć free -h
2. Sprawdź swap
vmstat 1 5 | grep -E 'si|so'

3. Szukaj procesów zużywających pamięć
ps aux --sort=-%mem | head -20

4. Sprawdź I/O wait
iostat -x 1 5

Problem: Serwer Metin2 (MT2SRV) zajmuje za dużo pamięci

# Monitoruj samo server gry watch -n 1 'ps aux | grep -E "game|db|auth" | awk "{print \$2, \$4, \$11}"'
Jeśli pamięć rośnie bezustannie (memory leak)
ps aux | grep game | awk '{print $2}' # Uzyskaj PID
cat /proc/[PID]/status | grep VmRSS # Aktualna pamięć tego procesu

Wyzwalanie alertów przy braku pamięci

#!/bin/bash AVAILABLE=$(free -h | awk '/^Mem:/ {print $7}' | tr -d 'G') if (( $(echo "$AVAILABLE < 1" | bc -l) )); then echo "ALARM: Pamięć poniżej 1GB!" fi