Gyakran találkozom azzal a nézettel a Linux felhasználók részéről, hogy ha a gépben elegendő RAM van, a swap (lapozófájl/lapozóterület) használata teljesen fölösleges, sőt, lelassítja a rendszert.
A válaszom erre a feltételezésre az hogy nem, a swap-et szinte mindig érdemes bekapcsolva hagyni!
Még akkor is, ha sok szabad RAM áll rendelkezésre, a swap jelenléte kifejezetten javíthatja a Linux teljesítményét és stabilitását.
- Tévhit: „Ha van elég RAM-om, a swap csak lassít”
Sokan úgy gondolnak a swap-re, mint egy lassú „pót-RAM-ra”, ami csak akkor kell, ha elfogy a fizikai memória. Mivel a lemezről (vagy SSD-ről) történő olvasás lassabb, mint a RAM, logikusnak tűnhet a következtetés: ha kiiktatjuk a swap-et, a rendszer garantáltan csak a gyors RAM-ot fogja használni. A valóságban azonban a Linux Kernel memóriakezelése ennél sokkal intelligensebb.
Hogyan segít a swap bőséges RAM esetén is?
Inaktív memórialapok kiszervezése: a futó alkalmazások sok olyan memórialapot (memory page) foglalnak le, amelyeket az elindításuk óta szinte egyszer sem használtak újra. A kernel ezeket a ritkán használt adatokat áthelyezi a swap-be.
Több hely a gyorsítótárnak (Cache): a felszabadult fizikai RAM-ot a kernel a lemezolvasási gyorsítótárra (page cache) tudja fordítani. Mivel az aktívan használt adatfájlok és programkódok gyorsítótárazása sokkal nagyobb teljesítménynövekedést hoz, mint az inaktív adatok RAM-ban tartása, a rendszer összességében gyorsabbá válik.
- A biztonsági háló: kerüld el az OOM Killert!
Mi történik akkor, ha nincs swap, és a rendszer memóriája mégis elfogy (például egy memóriaszivárgás vagy hirtelen terheléstüske miatt)?
Swap nélkül: a kernel nem tud több memóriát kiosztani, ezért végső megoldásként életbe lép az OOM (Out Of Memory) Killer. Ez a folyamat kíméletlenül lelövi a legtöbb memóriát használó alkalmazást!
Swap jelenlétében: a swap puffert biztosít. Bár a rendszer a lemezes lapozás miatt érezhetően lelassulhat, ez időt ad a felhasználónak (vagy a monitoring rendszernek), hogy reagáljon a problémára, mielőtt a kritikus szolgáltatások összeomlanának.
- Rendszerhangolás: swappiness és vfs_cache_pressure
A swap működését finomhangolhatjuk a Linux sysctl paramétereivel. A Linux memória-kezelésének finomhangolása során ez a két leggyakrabban módosított Kernel-paraméter. Megfelelő beállításukkal a rendszer érezhetően gyorsabbá, válaszképesebbé válhat, és csökkenthető a lemezre való felesleges írás/olvasás (I/O) mértéke.
vm.swappiness (alapértelmezett: 60)
Mit csinál? Azt szabályozza, hogy a Kernel milyen arányban szabadítson fel RAM-ot a nem használt programadatok (memórialapok) a swap-be mozgatásával, a fájl-cache kiürítésével szemben.
Skála: 0 és 200 között.
Alacsonyabb érték: a rendszer hosszabban a fizikai RAM-ban tartja az adatokat.
Magasabb érték: a rendszer korábban elkezdi kiírni az inaktív memórialapokat a swap-be.
vm.vfs_cache_pressure (alapértelmezett: 100)
Mit csinál? Azt határozza meg, hogy a Kernel mennyire agresszívan ürítse ki a RAM-ból a fájlrendszer metaadatait (VFS dentry és inode cache, pl. könyvtárszerkezetek, fájlok helye és tulajdonságai).
Skála: 0-tól felfelé (nincs szigorú felső határa).
100 alatti érték: a rendszer „ragaszkodik” a fájlmetaadatokhoz, és a RAM-ban tartja azokat (kevesebb lemez-I/O, több felhasznált RAM).
100 feletti érték: a rendszer gyorsan kidobja a fájlmetaadatokat a RAM-ból, hogy helyet csináljon a programoknak.
Ajánlások:
Felhasználási profil | vm.swappiness | vm.vfs_cache_pressure | Fő előnye ----------------------|---------------|-------------------------|---------- Általános (16GB+ RAM) | 10 | 50 | Gördülékenység, gyors fájlelérés Kevés RAM / Szerver | 30 – 60 | 150 | Több RAM biztosítása a folyamatoknak SSD kímélő | 1 | 50 | Minimális lemezes írás/olvasás Alapértelmezett | 60 | 100 | Általános, biztonságos egyensúly
Beállítás:
Hagyományos rendszereknél az /etc/sysctl.conf, újabb rendszereknél az általunk létrehozott /etc/sysctl.d/99-swappiness.conf fájlba írjuk a kért értékeket, pl.:
vm.swappiness = 10 vm.vfs_cache_pressure = 50
Érvényesíteni a (sudo) sysctl --system paranccsal tudjuk, ellenőrizni a cat /proc/sys/vm/swappiness, és a cat /proc/sys/vm/vfs_cache_pressure parancsokkal.
Ha bizonytalan vagy, érdemes a vm.swappiness = 10 és vm.vfs_cache_pressure = 50 párossal indítani asztali számítógépen. Teszteld a rendszert pár napig, ha nem tapasztalsz memóriahiányt, ez a kombináció adja a legjobb felhasználói élményt!
Berus

Hozzászólások
Swap vagy nem swap: az itt a kérdés
Beküldte Hosszú Lajos -
Értékelés:
Én zRAM-ot is használok, mert gyorsabb, mint a lemezes swap. 16 GB RAM mellett is használja a rendszer a lapozófájlt. Nagy terhelésnél akár 500-600 MB-ot is swap-el a rendszer. A zRAM egy tömörített lapozófájl a memóriában. Nálam alapértelmezetten 4 GB-ot használ fel a memóriából (gondolom, nem egyszerre az egész 4 GB-ot, hanem növekszik a mérete a használattól függően). A fizikai lapozófájl megmaradt. Együtt most 6,2 GB a swap.
lajos@lajos-Aspire-E5-772G:~$ swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1,8G 0B -2
/dev/zram0 partition 4G 768K 100
Itt van a Rendszerfigyelő: https://ibb.co/RGX0xgX3
A zRAM egyetlen baja, hogy az
Beküldte berus -
Értékelés:
A zRAM egyetlen baja, hogy az OOM-től nem véd... Létezik zSwap is, az elvileg jobb, de kell hozzá hagyományos swap terület, először a RAM-ba tömörít, aztán ha elfogy kiírja a swap-be az adatot.
A zRAM egyetlen baja, hogy az
Beküldte kami911 -
Értékelés:
ahogy ő használja,úgy azért véd. Vagy legalább később kerül OOM helyzetbe a gép.
zRAM
Beküldte Hosszú Lajos -
Értékelés:
Olyan nagy memóriafoglaló programokat én nem használok. Meg aztán, ha több memória kellene, lehet növelni a zRAM méretét – ez ugyanis tömörítve használja a RAM-ban a swap-et.
zRAM
Beküldte kami911 -
Értékelés:
igen, ott CPU terhelés jelentkezik pluszban, de még mindig jobb, mint egy OOM. Hogy ezt a volt cégem javaslatomra miért nem akarta, rejtély.