Swap vagy nem swap: az itt a kérdés

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

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

Értékelés: 

0
Még nincs értékelve

É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

Értékelés: 

0
Még nincs értékelve

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. 

kami911 képe

A zRAM egyetlen baja, hogy az

Értékelés: 

0
Még nincs értékelve

#2 ahogy ő használja,úgy azért véd. Vagy legalább később kerül OOM helyzetbe a gép.

zRAM

Értékelés: 

0
Még nincs értékelve

#2 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.

kami911 képe

zRAM

Értékelés: 

0
Még nincs értékelve

#4 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.