A Linux 2.4-ben és a korábbi verziókban a swap fileok használata kevésbé volt robosztus, mint a swap eszközök (partíciók) használata, mert ebben az esetben fel kellett olvasni a metadata információkat a filerendszerről, és ez gyakran az OOM killer elhasalásához vezetett (deadlock) amikor az oldalakat (pages) és buffer_head-eket allokált a swap közben. Ez megváltozott a Linux 2.5-ben. A 2.5-ben a swap fileok használata semmilyen hátrányt nem okoz, összehasonlítva a swap eszközökkel (partíciókkal). A kernelnek nem kell memóriát allokálnia ahhoz, hogy a swapcache oldalt megkapja a diszktől.
Ez érdekes lehet, hiszen a swap fileokat könnyebben lehet kezelni mint a partíciókat, (könnyebb létrehozni, törölni, átméretezni), és könnyebb csíkozni (stripe). Lehetséges, hogy ez (swap file) fel fogja váltani a swap partíciót a Linux 2.6-ban. A lényeg: a swap fileok használata semmilyen negatív hatással nincs a teljesítményre, összehasonlítva a swap eszközökkel (partíciókkal).
Ha van két lemezed, akkor célszerű a swap fileokat mindegyiken elhelyezni, és egyenlő-prioritású csíkozást beállítani közöttük. Ez adja a legjobb raw swap I/O átviteli sebességet, viszont ez több seek-elést (keresés a hdd mechanika által) okoz a swap és a rendes fileok között.
Cökkenthetjük a seek-elési problémát, ha egy egész diszk területet kinevezünk swap eszköznek.
Igazából, ha a használt alkalmazásod már kárát látja a swap teljesíményének (túl sokat swappel) akkor több RAM-ra van szükséged.
6. Swap terület kikapcsolása
A swap területet ki lehet kapcsolni, ha nincs rá szükség. A swap terület kikapcsol, ha a rendszer leáll/újraindul a 'swapoff' parancs ('man swapoff') hatására.
swapoff /work/swapfile.1
swapoff /work/swapfile.2
swapoff /dev/hdb1
swapoff /dev/hda2
A 'swapoff' helyett használhatjuk a 'swapoff -a' parancsot, amely kikapcsolja az összes swap partíciót, amely be van jegyezve a /etc/fstab fileba (ez nem vonatkozik a swap fileokra, csak a swap partíciókra).
7. A swap terület egyéb felhasználásai
A swap eszközök (partíciók) használhatóak még az ún. "software suspend"-re (swsusp) (szoftveres hibernáció) a Linux 2.5-ben, és használható a Linux kernel összeomlása esetén, mint dump terület, hova a kernel dumpokat el lehet menteni. A swap területet fel lehet használni arra is, hogy megosztott swap területe legyen más OS-eknek is [3] [4].
8. CREDITS
Köszönet mindenkinek, aki hozzászólt ehhez a mini-HOWTO-hoz a kezdeti szakaszán, többek között: Andries Brouwer, Bernd Eckenfels, Troels Walsted Hansen, Dave Jones, Pavel Machek, és Andrew Morton. Az Ő hozzászólásuk közül néhány idézve van a dokumentumban.
9. Fordítások:
Az eredeti angol verzió elérhető:
"http://www.xenotime.net/linux/swap-mini-howto.txt".
A Magyar fordítást megtalálod:
"http://www.hup.hu/modules.php?name=News&file=article&sid=1976".
Az lengyel fordítás itt (volt) elérhető:
"http://jacek.rallypl.eu.org/translations/swap-mini-howto.txt".
10. Referenciák:
1. Joe Knapka, "Outline of the Linux Memory Management System".
URL:
http://home.earthlink.net/~jknapka/linux-mm/vmoutline.html
2. Rik van Riel: "Linux-MM docs: the OOM killer"
URL:
http://linux-mm.org/docs/oom-killer.shtml
3. Swap-Space, Linux Swap Space Mini-HOWTO. Frissítve: 2002. július
How to share your Linux swap partition with Windows.
URL:
http://www.tldp.org/HOWTO/mini/Swap-Space.html
4. URL:
http://marc.theaimsgroup.com/?l=linux-kernel&m=10362363632408
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Aranyos kis leírás, de az azért jó lenne bele, hogy a swap terület mérete attól is függ, hogy mire szeretnéd használni a gépet... szerver, esetleg egy sima asztali gép, stb...
Szervernél érdemes még a jelenlegi memória dupláját venni.
Na meg asszem (de ez nem biztos), hogy a swap partíció egy bizonyos méret felett veszít a hatékonyságából... szal, bizonyos esetekben érdemes lehet egy nagyon-nagy swap-partíció helyett több kisebbet készíteni...
Illetve talán még az is belefért volta, hogy a biztonságon túl a partíció azért is elõnyösebb a file-val szemben, mert gyorsabb a kezelése...
Persze, az is lehet, hogy megint csak rosszakat álmodtam...
De azért jó kis leírás... :)
The NeverGone :)
- A hozzászóláshoz be kell jelentkezni
> Illetve talán még az is belefért volta, hogy a biztonságon túl a partíció azért is elõnyösebb a file-val szemben, mert gyorsabb a kezelése...
Ez mar nem igaz. Igaz volt a 2.4-re, de a következo kernelekre mar nem. Ez egy elore mutato howto ;-)
Andrew Morton:
"Something I'd like to point out here: in 2.4 and earlier, swapfiles are less robust than swap devices - the need to go and read metadata from the filesystem made them prone to oom deadlocks allocating pages and buffer_heads with which to perform the swapout.
That has changed in 2.5. Swapping onto a regular file has no
disadvantage wrt swapping onto a block device. The kernel does not need to allocate any memory at all to get a swapcache page onto disk."
Rik van Riel a 2.5-ös Linux kernel VM-jének fejlesztője:
"For the swap layer, swap to a partition or to a file is the
same thing."
- A hozzászóláshoz be kell jelentkezni
Nem tudom hogy pontosan mire gondoltál, de azt hiszem egy nagyon lényeges dolog kimaradt. Mégpedig az (több vinyó esetén) hogy ekkor lehet a legkönnyebben raid -ezni. Azaz ha 'pri=1' -et írunk mindkét helyre akkor az csíkozva lesz. (Nem tudom hogy B. erre gondolt-e)
- A hozzászóláshoz be kell jelentkezni
Na akkor jatszunk olyat, hogy ilyen patch szeruen ki mit akat beletenni, es hova. Pontos sorok megadasaval. Pl.
- A swap területet ki lehet kapcsolni, ha nincs rá szükség. A swap terület kikapcsol, ha a rendszer leáll/újraindul a 'swapoff' parancs ('man swapoff') hatására.
+ Ide jon a javasolt csere, vagy kiegeszites
Jok ezek a hozzaszolasok, ezzel is csak fejlodik a dokumentum.
- A hozzászóláshoz be kell jelentkezni
akkor itt egy patch:
/dev/hdb1 none swap defaults 0 0
+Sőt több vincseszter esetén akár raidet is érdemes beállítani rá, és nagyon egyszerű!
Nincs szükség az mkraid parancs, raidtab ... használtára.
Swap partició esetén a sebesség számít, az adatbiztonság egyáltalán nem, így csak a csíkozás jöhet szóba.
Az előző /etc/fstab részlet így módosul:
/dev/hda2 none swap defaults,pri=1 0 0
/dev/hdb1 none swap defaults,pri=1 0 0
Már kész is a csíkozás. Így elvileg kétszeres sebességet érünk el (persze ez nagyban függ a vincseszterek kihasználtságától és sebességétől).
- A hozzászóláshoz be kell jelentkezni
Ez a howto tegnap jelent meg az LKML-en. Azert forditottam le mert a legutolso korulbelul 3 eves, es olyan dolgok vannak benne, amik mar eleg gazok. Mint latod, a HOWTO-t nem en irtam, hanem a fent nevezett ur Randy Dunlap [rddunlap@osdl.org], en csak leforditottam.
Egyebkent az ls-nek is van "howto"-ja:
"man ls"
talan meg hosszab is mint ez. ;-)
- A hozzászóláshoz be kell jelentkezni
>Pl. én most tudam meg, hogy 32 swap eszközt/filet lehet használni. A man oldalam még most is 8-at ír.
Ez a 2.4.10-ben valtozott meg. regi a man oldalad...
- A hozzászóláshoz be kell jelentkezni
Igaz nagyon nem mai a cikk, de a plusz információ mindig belefér:
"Sőt több vincseszter esetén akár raidet is érdemes beállítani rá, és nagyon egyszerű! Nincs szükség az mkraid parancs, raidtab ... használatára. Swap partíció esetén a sebesség számít, az adatbiztonság egyáltalán nem, így csak a csíkozás jöhet szóba."
Nos, aki üzemeltet nagy rendelkezésre állású szervert, az azt hiszem ezzel nem ért egyet, hisz az egyik vinyó kiesésekor a rendszer összeomlását veszélyeztetjük. Persze otthoni rendszereken, illetve ahol a sebesség inkább számít a megbízhatósággal szemben, ott elfogadható a fenti érv.
u.i.: kár,hogy nincs valami utalás a más rendszer való swap használatra. Évekkel ezelőtt windows xp-vel használtam megosztva linux swap partíciót, most épp vista-val küzdök ugyanezen ;)
-----------------------------------------------------
Software is like a sex, it's better with a penguin :)
-----------------------------------------------------
- A hozzászóláshoz be kell jelentkezni