A swap (lapozóterület) a lemezen kijelölt terület, amelyet a Linux a fizikai memória (RAM) kiegészítésére használ. Amikor a RAM megtelik, a kernel a ritkán használt memórialapokat kiírja a swapra, és az így felszabaduló memóriát az éppen aktív programok kapják meg. Ha később újra szükség van a kiírt adatokra, a kernel visszaolvassa őket a memóriába.
A swap a virtuális memóriakezelés része: a programok nem tudják, hogy adataik egy része éppen a lemezen van. Ennek ára a sebesség, mert a lemez, még a gyors NVMe SSD is, nagyságrendekkel lassabb a RAM-nál.
Mire jó, és mire nem?
A swap elsősorban biztonsági tartalék. Ha egy szerveren rövid időre elfogy a memória (például egy forgalmi csúcs vagy egy nagy mentés idején), swap nélkül a kernel OOM killere azonnal leállít egy folyamatot, gyakran éppen az adatbázist. Swappal a rendszer lelassul, de átvészelheti a csúcsot. A kernel akkor is kiírhat a swapra régóta nem használt memórialapokat (például egy indításkor betöltött, de azóta tétlen szolgáltatás adatait), ha még van szabad RAM, így több jut a fájlgyorsítótárnak.
A swap viszont nem helyettesíti a RAM-ot. Ha a rendszer folyamatosan ír és olvas a swapra, a válaszidők drámaian megnőnek. Ez annak a jele, hogy a szervernek több memória kell.
Swap partíció vagy swap fájl
- Swap partíció: a lemez külön partíciója, általában telepítéskor jön létre.
- Swap fájl: egy közönséges fájl a fájlrendszeren. Utólag is könnyen létrehozható, átméretezhető vagy törölhető, ezért VPS-en többnyire ez a praktikusabb.
A kettő teljesítményben a mai kerneleken gyakorlatilag egyenértékű. A swap fájl létrehozását lépésről lépésre az OOM killerről és a swap fájlról szóló cikkünk írja le.
A swap ellenőrzése
free -h # memória és swap: összes, használt, szabad
swapon --show # a bekapcsolt swap területek és méretük
vmstat 1 5 # az si és so oszlop a másodpercenként be- és kilapozott adat
Önmagában nem baj, ha a free -h kimenetében a swapból valamennyi foglalt: ezek lehetnek régóta nem használt lapok. A figyelmeztető jel az, ha a vmstat si és so oszlopában tartósan nullától eltérő értékek látszanak, vagyis a rendszer folyamatosan lapoz.
A swappiness beállítás
A vm.swappiness paraméter (0–200, a legtöbb disztribúción alapértelmezetten 60) azt szabályozza, mennyire szívesen lapoz ki a kernel a fájlgyorsítótár ürítése helyett. Az aktuális értéket a cat /proc/sys/vm/swappiness parancs mutatja. A tesztgépeken az Ubuntu 24.04 és a Debian 12 a gyári 60-as értékkel futott, az AlmaLinux 9 és 10 viszont 30-cal: ezt a tuned szolgáltatás virtual-guest profilja állítja be virtuális gépeken (tuned-adm active). Adatbázis-szervereken gyakran alacsonyabb értéket (például 10) állítanak be, hogy a kernel csak végszükség esetén nyúljon a swaphoz.
Mekkora swap kell?
Nincs mindenkire érvényes szabály. Kis memóriájú VPS-en (1–4 GB RAM) a RAM méretével megegyező swap jó kiindulópont, nagyobb memóriájú szervereken általában néhány gigabájt is elég tartaléknak. Ha a swap rendszeresen megtelik, ne a swapot növelje, hanem a memóriát: a KVM VPS-csomagok erőforrásai utólag is bővíthetők. További gyakorlati tanácsokat a swap fájlról szóló blogbejegyzésünkben talál.