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

<p class="callout info">Komenda `free` – stan pamięci teraz</p>

```
free
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/UP7image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/UP7image.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](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/8dAimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/8dAimage.png)

```
free -m
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/OhVimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/OhVimage.png)

Wynik w megabajtach.

```
free -g
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/lEQimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/lEQimage.png)

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

```
free -w
```

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/DKoimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/DKoimage.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](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/S4Wimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/S4Wimage.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!)

<p class="callout info">Monitorowanie pamięci w czasie rzeczywistym</p>

```
free -h -s 2
```

Wyświetla stan pamięci co 2 sekundy.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/7sJimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/7sJimage.png)

```
free -h -s 2 -c 10
```

Monitoruje co 2 sekundy, 10 razy.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/IsRimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/IsRimage.png)

```
watch -n 1 'free -h'
```

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/fAMimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/fAMimage.png)

<p class="callout info">Komenda `vmstat` – Virtual Memory Statistics</p>

**Wprowadzenie do `vmstat`:**

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

```
vmstat
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/Zdrimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/Zdrimage.png)

Jednorazowy raport.

```
vmstat 2 5
```

Raport co 2 sekundy, 5 razy.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/cDfimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/cDfimage.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](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/Zdrimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/Zdrimage.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 &gt; 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)

<p class="callout info">Komenda `iostat` – I/O Statistics</p>

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

```
iostat
```

Ogólne statystyki od ostatniego restartu systemu.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/q6nimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/q6nimage.png)

```
iostat -x 2 5
```

Rozszerzone statystyki dysku, co 2 sekundy, 5 razy.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/cDUimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/cDUimage.png)

**Interpretacja wyniku:**

```bash
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](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/lQnimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/lQnimage.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 (&gt;80% = problem)
- `r_await / w_await` – średni czas oczekiwania operacji (wysoki = wolny dysk)

<p class="callout info">Komenda `sar` – System Activity Reporter</p>

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

```bash
sar -u 2 5
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/bTKimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/bTKimage.png)

Statystyki CPU co 2 sekundy, 5 razy.

```bash
sar -r 2 5
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/Pgvimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/Pgvimage.png)

Statystyki pamięci.

```bash
sar -d 2 5
```

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/Rjzimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/Rjzimage.png)

Statystyki dysków (podobnie jak `iostat`).

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/SGNimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/SGNimage.png)

```bash
sar -b 2 5
```

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/xAuimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/xAuimage.png)

<p class="callout info">Monitorowanie swap activity – problem w systemach</p>

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

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/3S7image.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/3S7image.png)

Ostrzeżenie gdy system zaczyna pisać do swap

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

Ciągłe monitorowanie najnowszych danych vmstat.

[![image.png](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/scaled-1680-/HGJimage.png)](https://wiedza.konio-dc.eu/uploads/images/gallery/2025-11/HGJimage.png)

<p class="callout info">Praktyczne problemy z pamięcią i jak je diagnozować</p>

<p class="callout warning">**Problem: System powolny, dużo swap activity**</p>

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

<p class="callout warning">**Problem: Serwer Metin2 (MT2SRV) zajmuje za dużo pamięci**</p>

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

<p class="callout info">Wyzwalanie alertów przy braku pamięci</p>

```bash
#!/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
```