Andrew Morton most éppen azon dolgozik, hogy a legutolsó AA VM-et kisebb darabokra szedje, hogy könnyebben lehessen azt kezelni.
Andrew Morton egy levelet küldött Andrea Arcangelinek, amelyben leírja, hogy ``feltámasztotta" az OOM (Out of Memory) killer kódot. Az OOM killer az a task, amely akkor lép a színre, ha a VM kifut a memóriából. Az OOM killer feladata, hogy kiválassza mely processz(eke)t ``lője" le, annak érdekében, hogy a rendszer újra memóriához juthasson.
Morton a levelében leírja, hogy azért hívta újra életre a kódot mert Tosatti szerint meg kell tartani a kernelben az OOM killert. Az elgondolás az, hogy ha a try_to_free_pages nem sikerül, akkor jobban járunk ha egy előre megfontolt rendszer szerint választjuk ki a ``megölni" kívánt processz(eke)t, mint ha mindezt random tennénk abban az esetben ha az allokáció nem sikerül.Morton ír is egy példát erre itt.
A példában látszik, hogy a felhasználó kikapcsolta swap-et, mert szerinte így nagyobb interaktivitást élvezhet a rendszer felöl. Ebben van is némi igazság. De van benne rizikó is. Mint olvashatjuk Az illető X-et futtatott, ment a képernyőkímélő, és váratlanul elindult egy ``updatedb". A rendszer mgpróbált swap-olni, de mivel a swap ki volt kapcsolva, megelőzendő a deadlock-ot, elindított egy kill folyamatot (VM: out
of memory ..."). És az mit tett? Ahelyett, hogy ésszerűen lelötte volna az ``updatedb"-t, a screensaver-t, és egyéb nem fontos processzt, magát az X szervert killelte (én nem örülnék neki, ha egy megnyitott levelem, vagy más dokumentumom azért veszne el mert a kernel random lelövi a processzeket).
Ezt megelőzendő Andrew Morton feltámasztotta az OOM killert, amely azt teszi, hogy nem random kezdi lelőni a processzeket, hanem valamilyen ésszerű szempontok alapján (nem mindjárt az init-el kezdi).
Tehát :
Morton beleillesztette az OOM killert a try_to_free_pages() függvénybe. Ennek az lett az eredménye, hogy ha a VM kifogy a swapból 5-10 másodpercig őrülten tekerni kezd mielőtt feladja, majd meghívja az OOM killert. Majd újabb 5 másodperc eltelik addig, amíg az OOM killer kiválasztja a `megölendő" processzt. Viszont működik, és nem random bele a közepébe a dolgoknak. Ezenkívül Morton még néhány igazítást végzett az OOM killer kódján, hogy biztos ne tudja az init-et lelőni.
A patch megtalálható a vm-24-hez itt.
A múltkor volt egy-két okos, (bár névtelen) hozzászólás az Arcangeli VM-el kapcsolatban. Ezeknek a hozzászóloknak mondom, ezek a dolgok hiányoznak az Arcangeli VM-ből. Jelzem az OOM killer Rik van Riel munkája, és része az -rmap VM-nek (már régen).