Kennisbank › Linux › Linux proces en geheugenbeheer
linux gevorderd 26 August 2026

Linux proces en geheugenbeheer

Linux proces- en geheugenbeheer: kernelmechanismen, tools en allocatorsDit artikel legt uit hoe het Linux-geheugenbeheersubsysteem werkt — van paginering tot

Linux proces- en geheugenbeheer: kernelmechanismen, tools en allocators

Dit artikel legt uit hoe het Linux-geheugenbeheersubsysteem werkt — van paginering tot allocators — en toont de commando’s waarmee je processen en geheugengebruik monitort. Gericht op systeembeheerders en DevOps-engineers die met Linux-kernels versie 5.x en 6.x werken.

Vereisten

- Een Linux-systeem met kernelversie 5.13 of hoger (voor vmalloc huge page support) of 6.12+ (voor vrealloc) - Root-toegang of sudo-rechten voor het bekijken van kernel-documentatie en het installeren van tools - `procps`-pakket (bevat `vmstat`) — standaard aanwezig op de meeste distributies - `smem`-tool installeren: `sudo apt install smem` (Debian/Ubuntu) of `sudo dnf install smem` (Fedora/RHEL)

Stappen

1. Controleer je kernelversie

Voer uit:

uname -r

Notuleer het versienummer. De geheugenbeheerfuncties verschillen per kernelversie — vrealloc bestaat bijvoorbeeld pas sinds v6.12 (2024).

2. Begrijp de basis: paginering en paginatabellen

Elk Linux-proces heeft een eigen paginatabel. Die tabel koppelt virtuele geheugenadressen aan fysieke geheugenlocaties. Het geheugen is verdeeld in gelijke blokken: virtuele “pages” worden toegewezen aan fysieke “page frames”. Dit is de kern van geheugenisolatie tussen processen — een proces kan geen geheugen van een ander proces lezen of schrijven.

Bekijk de officiële kernel-documentatie:

man 9 memory

of online: de sectie “Memory Management” in de Linux Kernel-documentatie (bijgewerkt op 24 augustus 2026) en de aparte “Memory Management Documentation”-pagina (geactualiseerd op 18 augustus 2026).

3. Bekijk actief geheugengebruik met vmstat

`vmstat` toont processen, geheugen, paging, block I/O, context switches en CPU-activiteit. Het eerste rapport toont gemiddelden sinds de laatste herstart; volgende rapporten tonen een bemonsteringsperiode.

vmstat 2 5

Dit draait 5 rapporten met 2 seconden interval. Kijk naar de kolommen `si` (swap in) en `so` (swap out) — hoge waarden duiden op geheugendruk.

4. Meet geheugengebruik per proces met smem

`smem` rapporteert geheugengebruik per proces, inclusief USS (Unique Set Size) — het geheugen dat exclusief door één proces wordt gebruikt, zonder overlap met andere processen. Dit is nauwkeuriger dan `top` of `ps` voor systemen met veel gelijktijdige processen.

smem -rs uss

De `-r` vlag sorteert, `-s uss` sorteert op USS-kolom. Installeer het pakket eerst als het ontbreekt (zie Vereisten).

5. Configureer swap-geheugen

Swap is virtueel geheugen op schijf dat wordt gebruikt wanneer RAM vol raakt. Het voorkomt een directe crash, maar is langzamer dan RAM. Bekijk de huidige swap-status:

swapon --show

Om een swapfile van 2 GB aan te maken:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Voeg `/swapfile none swap sw 0 0` toe aan `/etc/fstab` om dit permanent te maken.

6. Beperk resources met cgroups

cgroups (control groups) beperken geheugen en andere resources per groep processen. Dit is essentieel in multi-user omgevingen en containers. Maak een cgroup aan met een geheugenlimiet van 512 MB:

sudo mkdir /sys/fs/cgroup/memory/mygroup
echo 536870912 | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

Plaats een proces in de groep door het PID te schrijven naar de taken-file:

echo <PID> | sudo tee /sys/fs/cgroup/memory/mygroup/tasks

7. Ken de OOM-killer

De Out-of-Memory killer beëindigt automatisch een of meer processen wanneer het systeem ernstig geheugen tekort komt. Het is een laatste redmiddel om de kernel stabiel te houden. Bekijk de OOM-killer-logboek:

dmesg | grep -i "out of memory"

Je kunt het OOM-gedrag per proces beïnvloeden met `oom_score_adj`:

echo -1000 | sudo tee /proc/<PID>/oom_score_adj

Een waarde van -1000 maakt een proces immuun voor de OOM-killer; +1000 maakt het een eerste kandidaat.

8. Ken de allocator-geschiedenis (voor context)

De kernel gebruikt verschillende allocators door de tijd heen. Deze kennis helpt bij het interpreteren van kernel-documentatie en het kiezen van optimalisaties:

- 1991: buddy allocator voor geheugenpagina’s - 1996: SLAB-allocator voor kernelobjecten - 2007: SLUB wordt standaard (betere prestaties, eenvoudiger onderhoud) - 2021 (v5.13): vmalloc huge page support - 2023: SLOB verwijderd (was voor zeer kleine systemen) - 2024 (v6.12): vrealloc — flexibeler herschikken van virtueel geheugen

Verificatie

Controleer of alles werkt:

vmstat 1 3
smem -rs uss | head -20
swapon --show
cat /sys/fs/cgroup/memory/mygroup/memory.usage_in_bytes

Je zou moeten zien: swap-activiteit in de `si`/`so`-kolommen, een lijst van processen gesorteerd op USS, je swapfile in de swapon-output, en een geheugengebruik onder de 536870912 bytes voor de cgroup.

Veelgestelde problemen

Probleem 1: `smem` commando niet gevonden Installeer het pakket: `sudo apt install smem` of `sudo dnf install smem`. Op sommige systemen heet het pakket `smemstat`.

Probleem 2: OOM-killer beëindigt processen ondanks voldoende swap Controleer of `vm.swappiness` laag staat. De kernel wisselt anders te agressief. Stel in met:

sudo sysctl vm.swappiness=10

Maak dit permanent in `/etc/sysctl.conf`.

Probleem 3: cgroup-map niet aanwezig onder /sys/fs/cgroup Op systemen met cgroups v2 (kernel 4.5+) gebruik je een andere interface. Bekijk de mount:

mount | grep cgroup

Bij cgroups v2 gebruik je `echo "max" > /sys/fs/cgroup//memory.max` in plaats van `memory.limit_in_bytes`.

De kernel evolueert — de allocator van vandaag is over vijf jaar anders. Blijf de documentatiepagina’s volgen; de volgende wijziging staat al in de changelog van kernel v6.13.

← Terug naar kennisbank
← Terug naar kennisbank