Kernel: swap előolvasás (prefetch)

Címkék

Thomas Schlichter egy érdekes ötlettel állt elő az LKML-en. Egy levelet postázott a levlistára, amelyben egy olyan új kernelfunkciót vázolt fel - mint lehetségesen implementálható feature - amelyet egyik operációs rendszer sem tartalmaz jelenleg, de hasznos lehetne főleg az asztali számítógépek területén. Az elgondolás az, hogy be kellene olvasni előre a kilapozott (swapped out) memóriaoldalakat akkor, ha van szabad rendelkezésre álló fizikai memóri (RAM), a CPU éppen idle (azaz nem csinál semmit), és az IO terhelés is alacsony. Hogy mire lenne ez jó?Mivel a számítógép éppen üresben jár, "nem kerülne semmibe" ha a kilapozott oldalakat előre behúznánk a fizikai memóriába. Képzeljük el az alábbi helyzetet:

A felhasználó internetezik, a böngészőjében számos ablak meg van nyitva. Majd gondol egyet, és játszani kezd valamilyen játékkal. A játék sok RAM-ot igényel, ezért a rendszer kilapozza a felesleges böngészőt a lemez swap területére. A felhasználó befejezi a játékot, majd elmegy iszik egy kávét. A számítógép tulajdonképpen "idle" állapotba kerül, ilyenkor vissza lehetne lapozni a fizikai memóriába az előzőleg kilapozott böngészőt, és mire a felhasználó újra visszatér a gépéhez, nem kell arra várnia, míg a rendszer a memóriába tölti a böngészőt, hiszen az a kávészünet alatt megtette ezt.

Schlichter szerint a megoldás nem okozna teljesítménybeli negatív változást, hiszen csak szabad erőforrásokat használnánk fel.

Az elgondolásnak csak egy buktatója van. Hogy nincs jelenleg olyan algoritmus, amely meg tudná jósolni, hogy melyik az az oldal amit be kell húzni a memóriába előre. Azaz, hogy melyikekre lesz szükség legközelebb. A rendszer teljesítménye csökkenthet, ha rossz oldalakat tölt be, hiszen ha nem azokra van szükség akkor a rossz oldalakat előbb ki kell lapozni, majd a szükséges oldalakat be kell tölteni.

Bővebben a dologról itt.

Hozzászólások

Nem feltetlenul vaj az allando swappeles (pageles). Egy VMS pl.

probalja a page faultokat minden processre kozepes erteken tartani,

ezert folyamatosan lapoz.

Ehhez kapcsolodo otlet merult fel egy-ket napja a kernelnewvies listan

is, reszletek az archivumban.