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/meminfoCo 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 -15Zaję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 5Ustal, 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 -15Rozpoznaj 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.