Virginiai Műszaki Egyetem a Linux kernel fejlesztőinek egy olyan patchkészletet, amely megvalósítja az elosztott szálfuttatási rendszert (Distributed Thread Execution), amely lehetővé teszi az alkalmazások több számítógépen történő futtatását, átmeneti szálmigrálással a hosztok között. A Popcorn segítségével az alkalmazások egy hoszton indulhatnak, majd megszakítás nélkül áthelyezhetők egy másik hosztra. Többszálú programoknál lehetőség van a különböző hosztokra való szálmigrációra.
A projekttől eltérően, amely lehetővé teszi a folyamat állapotának mentését és más rendszeren való folytatását, a Popcorn zökkenőmentes és dinamikus migrációt biztosít a hosztok között az alkalmazás futása közben, felhasználói beavatkozás nélkül, és biztosítja a virtuális memória konzisztenciáját minden olyan hoszton, ahol a szálak egyidejűleg futnak.
A Popcorn szoftverstacket alkotják a Linux kernelhez és melyek teszteket tartalmaznak, bemutatva, hogyan használhatók a Popcorn rendszerek hívásai a szálak migrációjára elosztottan végrehajtott alkalmazásokban. A kernel szintjén az elosztott megosztott memória (distributed shared memory) megvalósításával kiegészítéseket javasoltak a virtuális memória alrendszerhez, lehetővé téve a különböző hosztokon futó folyamatok számára, hogy közös és konzisztens virtuális címteret érjenek el. A virtuális memória lapjainak konzisztenciáját egy protokoll biztosítja, amely a hosztokra másolja a memóriapéldányokat olvasási kéréskor, és érvényteleníti azokat íráskor.
A gazdagépek közötti interakció a kernel szintjén működő üzenetkezelő segítségével valósul meg, amely TCP socketen keresztül továbbítja az adatokat. Megjegyzendő, hogy a TCP/IP-t a hibaelhárítás és tesztelés egyszerűsítése érdekében használják a fejlesztés során. A fejlesztők tisztában vannak azzal, hogy a biztonság és teljesítmény szempontjából a TCP/IP nem a legjobb módszer a kernel struktúrák és a memóriaoldalak között tartalom átadására a gazdagépek között. Minden gazdagép, amelyen elosztott alkalmazások futnak, azonos bizalmi szinttel kell rendelkezzen. A fő algoritmusok stabilizálása után egy hatékonyabb szállítási mód kerül alkalmazásra.
A Popcorn 2014 óta fejlődik, mint kutatási projekt az elosztott alkalmazások létrehozásának lehetőségeinek feltárására, ahol a folyamatok különböző csomópontokon futtathatók számítási rendszerekben, ahol különböző utasításkészletek (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) alapú magok kombinálhatók. A Linux kernel fejlesztőinek ajánlott patchkészlet csak x86 CPU-val rendelkező gazdagépeken való futtatást támogat, de létezik egy funkcionálisan gazdagabb Popcorn Linux verzió is, amely lehetővé teszi az alkalmazások futtatását különböző CPU architektúrákkal rendelkező gazdagépeken (x86 és ARM). A Popcorn használatához heterogén környezetekben speciális szükséges, amely az LLVM alapú. Egységes architektúrájú gazdagépeken történő elosztott végrehajtás során nincs szükség külön fordítóra.
Ezen kívül érdemes megemlíteni egy hasonló projektről amely egy kezdeti API prototípus megvalósításával foglalkozik, hogy gyermekkihívásokat indítson más számítógépeken a klaszterben (mint a fork(), de a származtatott folyamatot egy másik számítógépre helyezi).
A kód Rust nyelven íródott és egyelőre csak a legegyszerűbb folyamatok klónozását teszi lehetővé, amelyek nem használják a rendszer erőforrásait, például fájlokat. A telefork hívás során a memória és a folyamathoz kapcsolódó struktúrák átmásolódnak egy másik gazdagépre, ahol a szerver feldolgozó (telepad) fut. A ptrace segítségével a folyamat memóriájának másolata sorosítva van, és a folyamat állapotával és regisztereivel együtt átkerül a másik gazdagépre. Az API lehetővé teszi a folyamat állapotának fájlba mentését és annak helyreállítását is.
Forrás: opennet.ru
