CH-J Server ManagerZarządzanie serwerem przez SSH
Menu
Wszystkie poradniki i artykuły →

Jak odczytywać RAM, pamięć podręczną i swap na serwerze Linux

Co oznaczają kolumny free, dlaczego duże użycie pamięci często jest normalne i jakie objawy naprawdę wskazują na jej niedobór.

Patrz na available, nie na free

Linux wykorzystuje niewykorzystaną pamięć jako pamięć podręczną dysku, więc mała ilość wolnej pamięci na sprawnym serwerze jest normalna. Kolumna available to oszacowanie jądra, ile pamięci mogą otrzymać nowe zadania bez korzystania ze swap. To tę liczbę należy obserwować. Dokładny sposób obliczania used zależy od wersji narzędzia, więc nie porównuj tej wartości między różnymi systemami.

free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfo

Co można, a czego nie można zwolnić z pamięci podręcznej

Pamięć podręczną stron zwykle można zwolnić, gdy aplikacje potrzebują pamięci. Pamięć współdzielona i tmpfs (Shmem) również są uwzględniane w pamięci podręcznej, ale nie można ich po prostu odrzucić, ponieważ zawierają dane bez kopii na dysku. Duża pamięć podręczna przy małej ilości pamięci available oznacza więc często duży tmpfs lub segment pamięci współdzielonej.

df -h -t tmpfs
sudo slabtop -o | head -15

Zajęty swap nie musi oznaczać problemu

Serwer może przez wiele tygodni przechowywać rzadko używane strony w swap bez szkody. Problemem jest ciągłe przenoszenie. Obserwuj kolumny si i so w vmstat: wartości utrzymujące się powyżej zera oznaczają aktywne przenoszenie stron między RAM a swap, co wskazuje na rzeczywisty niedobór pamięci.

swapon --show
vmstat 1 5

Ustal, co zajmuje pamięć

Posortuj procesy według pamięci rezydentnej. RSS wlicza strony współdzielone przez procesy do każdego z nich, dlatego wartości dla kilku procesów nie można po prostu zsumować. Narzędzia obsługujące PSS, takie jak smem, podają bardziej miarodajną sumę, jeśli są zainstalowane.

ps -eo pid,user,rss,comm --sort=-rss | head -15

Rozpoznaj rzeczywisty niedobór

Objawy to mało dostępnej pamięci, ciągłe przenoszenie stron do swap i z powrotem oraz procesy zabijane przez mechanizm out-of-memory killer. Sprawdź dziennik jądra. Nie uruchamiaj drop_caches, aby poprawić wygląd liczb: zmusza to tylko serwer do ponownego odczytywania danych z dysku i niczego nie rozwiązuje.

sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'

Pamięć w CH-J Server Manager

System Monitor odczytuje te wartości przez SSH. W systemie Linux definiuje used jako MemTotal − MemFree − Buffers − Cached − SReclaimable, a available jako oszacowanie jądra. Pamięć współdzielona jest częścią Cached i nie można jej zwolnić, a kategorie na pasku nie nakładają się na siebie. Ponieważ wzór różni się od używanego w niektórych wersjach free, liczby mogą nie być identyczne. Pokazuje także swap wraz z historią użycia. ZFS ARC nie jest traktowana osobno, więc na hostach z ZFS zalicza się do używanej pamięci.

Dokumentacja szczegółowa

man: free →

man: proc_meminfo →

Biometryczne odblokowanie i bezpieczeństwo →