CH-J Server Managerserverhantering över SSH
Menyn
Alla guider och artiklar →

Så läser du RAM, cache och swap på en Linux-server

Vad kolumnerna i free betyder, varför hög minnesanvändning ofta är helt okej och vilka tecken som verkligen tyder på minnesbrist.

Läs available, inte free

Linux använder annars oanvänt minne som diskcache, så lite ledigt minne är normalt på en frisk server. Kolumnen available är kärnans uppskattning av hur mycket minne nytt arbete kan få utan att använda swap. Det är det värdet du ska följa. Den exakta beräkningen av used beror på verktygets version, så jämför inte värdet mellan olika system.

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

Vad som kan och inte kan frigöras från cache

Sidcache kan vanligtvis frigöras när program behöver minne. Delat minne och tmpfs (Shmem) visas också under cache, men kan inte bara kastas bort eftersom de innehåller data som saknar kopia på disk. Stor cache med lite tillgängligt minne betyder därför ofta ett stort tmpfs eller ett stort segment med delat minne.

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

Använd swap är inte automatiskt ett problem

En server kan behålla sällan använda sidor i swap i veckor utan problem. Det som skadar prestandan är ständiga förflyttningar. Följ kolumnerna si och so i vmstat: värden som stannar över noll betyder att systemet aktivt flyttar sidor till och från swap, vilket är ett tecken på verklig minnesbrist.

swapon --show
vmstat 1 5

Hitta det som använder minnet

Sortera processerna efter resident minne. RSS räknar sidor som delas mellan processer i var och en av dem, så värdena för flera processer kan inte bara summeras. Verktyg med PSS, som smem, ger en mer rättvisande summa om du har dem installerade.

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

Känn igen verklig minnesbrist

Tecknen är lite tillgängligt minne, ständig växling till och från swap och processer som avslutas av out-of-memory killer. Kontrollera kärnloggen. Kör inte drop_caches för att få siffrorna att se bättre ut: det gör bara att servern måste läsa från disk igen och löser ingenting.

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

Minne i CH-J Server Manager

System Monitor läser dessa värden via SSH. På Linux definieras used som MemTotal − MemFree − Buffers − Cached − SReclaimable och available som kärnans uppskattning. Delat minne ingår i Cached och kan inte frigöras, och kategorierna i stapeln överlappar inte. Eftersom formeln skiljer sig från den i vissa versioner av free kanske siffrorna inte stämmer exakt överens. Även swap visas med sin användningshistorik. ZFS ARC hanteras inte separat, så på ZFS-värdar räknas det som använt minne.

Detaljerad dokumentation

man: free →

man: proc_meminfo →

Biometrisk upplåsning och säkerhet →