swap prefetching

Címkék

Nem nagyon találok jó magyar fordítást arra a munkára, amelyen éppen most dolgozik Con Kolivas, a desktop tuning patch-eiről ismert ausztrál doktor. Talán nem is kell lefordítani, jó így ahogy van. Nézzük mi az a swap prefetching...

Gyakran megfigyelhető az alábbi eset Linux rendszereken: egy nagyméretű (nagy memória igényű) alkalmazás rövid ideig fut, miközben - mivel fizikai memóriára van szüksége - az éppen nem használt hasznos memóriát kiszorítja a swap területre (swap out). Mikor a program befejezi futását, marad utána egy rakás szabad fizikai memória. Mivel futás közben ``kitolta'' az éppen akkor fizikai memóriában tárolt dolgokat, jelenleg egy csomó hasznos program-adat ragadt kinn a swap területen.Ha most a felhasználó megpróbál egy olyan futó alkalmazást használni, amelynek bizonyos részei kinn vannak a swap területen, akkor egészen addig kell várnia rá, amíg a lassú diszkről az adatok benépesítik a szabad fizikai memóriát.

Vajon nem lenne hasznos, ha a swap területről ``visszahúzná'' (prefetch) a rendszer a memóriába az adatokat, ha szabad fizikai memória állna rendelkezésre?

Számos kísérlet történt már korábban arra, hogy valaki ezt implementálja, de bebizonyított tény, hogy nehezen lehet újratölteni a fizikai memóriát úgy a swap területről, hogy az ne érintse hátrányosan a teljes rendszer teljesítményét. Con Kolivas most megpróbálja megoldani ezt a problémát. Azon dolgozik, hogy akkor ``húzza vissza'' a rendszer az adatokat a swap területről, ha a rendszer éppen idle, vagy idle közeli állapotban van. Hogy mit jelent ez? Azt, hogy a bizonyos időre magára hagyott géphez visszatérve az alkalmazások sokkal gyorsabban kelnek életre. A patch szerzője szerint egy modern hardveren végzett kísérletek azt mutatják, hogy az olyan alkalmazásokba, mint például a Mozilla Firefox, jelentősen gyorsabban is visszatérhet az élet, mint a patch nélküli rendszeren. A prefetch kód futtatása nem ``kerül olyan sokba a rendszer számára'', viszont jelentősen javíthatja a desktop használat körülményeit.

Bővebben itt.

Hozzászólások

Con patchsetjei eddig is baromi jok voltak, remelem ez sem hagy majd cserben !:)

Minek egyáltalán desktop gépre swap, manapság a fél, egy giga ramos konfigok korában... Amigán tök jól ment minden swap nélkül... hogyhogy ott meg lehetett oldani hogy az alkalmazás, mondjuk egy képszerkesztő program beszólt ha nem volt elég ram, hogy "not enough memory"? Most meg jobbik esetben OOM, rosszabbikban folyamatos reszelés amig a juzer meg nem unja és odatol a reset gombnak... k*rva egy világ már ez...

Teljesen jo. Mar egy ideje hianyoltam a linuxbol ezt a featuret.

--
Gabucino

Ez nagyon tetszik így első hallásra. Amikor magára hagyom a böngészőt meg még 1-2 programot és közben dolgozok (fordítok, mármint programkódot), akkor utána fél óra mire észhez tér a Firefox meg az Evolution. pedig csak a gcc zabálta fel a memóriát és vágott ki mindent swap-ba emiatt a rencör.

Amigán egy speckó módszer volt (már nem emlékszem a nevére) swap helyett. A rendszer az alkalmazások binárisainak éppen használt részeit map-pelte a memóriába. Ha egy újabb részre is szükség volt, azt a kódrészt is betöltötte.

Ha az alkalmazás nem futott és egy másiknak kellett a memória, a nem használtnak a kódját kitakarította a memóriából.

A programok nagy aktív memóriafoglalásaival (malloc) ez a rendszer nem foglalkozott, azok bent maradtak a RAM-ban. Később lehet, hogy ezt is megoldották, nem tudom, én csak 1.3-as Kickstart-ig foglalkoztam Amigával.

Amúgy ez valami hihetetlenül memória takarékos megoldás, nem tudom, miért nem implementálja senki más?

Egyébként tényleg meglepően hatékony kis rendszer volt. Mikor anno a 3.1-es Windows megjelent, Amiga után csak sajnálni lehetett a PC-seket.

Hozzáfűzném, hogy van a /proc/sys/vm/swappiness változó is (mely azt fejezi ki, hogy a rendszer milyen mértékben tegye ki a nagy, épp alvó processzeket a swap-be). Ennek értéke is használható némi tuningra. Én ezt mindenhol visszaveszem 10-re.

Ami meg a "mai RAM mellé nem kell swap" kérdést illeti: Swap nélkül, 512 MB RAM-mal (!) Gnome alatt használtam Firefoxot, képeket töltögettem le, jó 10 tab volt megnyitva. Meg akartam nyitni valami jó nagy képet (5-10MB jpg), de a Firefox egyszerre csak "lefagyott", mert beindult az oom-killer és kilőtte a böngészőt. Ugyanezt elképzelhetőnek tartom ooffice, gimp használatakor is. Szóval csak jó az a swap.

Itt desktopos kornyezetrol volt szo. Szerveres kornyezetben ez segit valamit?

In article <42.54406@c.hup.hu>, norcrys wrote:
> "Szóval csak jó az a swap"
> "Nem a swap jó, hanem a program *****"
> Ez volt a két kiejelentés.

"Szóval a swap eleve rossz? Ezt azért nem mondanám, inkább szükséges rossz."

Ez meg a harmadik. Csak epp semmi plusz infot nem hordoz.

--
Gabucino

In article <42.54409@c.hup.hu>, simca wrote:
> De ne fagyjon már le, ha olyan bazisok memóriát zabál, akkor szóljon a
> 9-edik tab nyitásakor hogy not enough ram, és csukja be, ne pedig buta
> oom-kill, vagy végtelenciklus... emberek mászkálnak a holdon, és ilyeneket
> nem lehet megoldani?

1. shut up and hack - bsd-style (broaf)
2. hat ird meg ha olyan nagy szukseged van ra - gnu[hup]-style (broaf)
3. pontosan igy van. - gabu-style (yeah)

--
Gabucino

felraktam, majd beszamolok az eredmenyekrol :)