CH-J Server Managerserverbeheer over SSH
Menu
Alle handleidingen en artikelen →

RAM, cache en swap op een Linux-server begrijpen

Wat de kolommen van free betekenen, waarom hoog geheugengebruik vaak normaal is en welke signalen echt op een geheugentekort wijzen.

Kijk naar available, niet naar free

Linux gebruikt anders ongebruikt geheugen als schijfcache. Weinig vrij geheugen op een gezonde server is dus normaal. De kolom available is de schatting van de kernel van hoeveel geheugen nieuwe taken kunnen krijgen zonder swap te gebruiken. Dat is het getal om in de gaten te houden. De precieze berekening van used hangt af van de versie van het gereedschap, dus vergelijk die waarde niet tussen verschillende systemen.

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

Wat wel en niet uit de cache kan worden vrijgemaakt

De paginacache kan meestal worden vrijgemaakt wanneer toepassingen geheugen nodig hebben. Gedeeld geheugen en tmpfs (Shmem) vallen ook onder cache, maar kunnen niet zomaar worden weggegooid: ze bevatten gegevens waarvan geen kopie op schijf staat. Een grote cache met weinig available geheugen wijst daarom vaak op een grote tmpfs of een groot gedeeld geheugensegment.

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

Gebruikte swap is niet automatisch een probleem

Een server kan zelden gebruikte pagina’s wekenlang zonder nadelige gevolgen in swap bewaren. Voortdurende verplaatsing veroorzaakt problemen. Let op de kolommen si en so in vmstat: waarden die boven nul blijven betekenen dat het systeem actief pagina’s tussen RAM en swap verplaatst. Dat wijst op een echt tekort.

swapon --show
vmstat 1 5

Achterhaal wat het geheugen gebruikt

Sorteer processen op resident geheugen. RSS telt pagina’s die processen delen bij elk van die processen mee. De waarden van meerdere processen kunnen daarom niet simpelweg worden opgeteld. Gereedschappen met PSS, zoals smem, geven een representatiever totaal als ze zijn geïnstalleerd.

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

Herken een echt tekort

De signalen zijn weinig beschikbaar geheugen, voortdurende verplaatsing tussen RAM en swap en processen die door de out-of-memory killer worden beëindigd. Controleer het kernellogboek. Voer drop_caches niet uit om de cijfers er beter uit te laten zien: daardoor moet de server alleen opnieuw van schijf lezen en wordt niets opgelost.

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

Geheugen in CH-J Server Manager

System Monitor leest deze waarden via SSH. Op Linux definieert het used als MemTotal − MemFree − Buffers − Cached − SReclaimable en available als de schatting van de kernel. Gedeeld geheugen is onderdeel van Cached en kan niet worden vrijgemaakt; de categorieën in de balk overlappen elkaar niet. Omdat de formule verschilt van sommige versies van free, komen de getallen mogelijk niet exact overeen. Het toont ook swap met de gebruiksgeschiedenis. ZFS ARC wordt niet apart behandeld en telt op ZFS-hosts dus als gebruikt geheugen.

Gedetailleerde documentatie

man: free →

man: proc_meminfo →

Biometrische ontgrendeling en beveiliging →