Virginia Polytechnic Institute and State University na diskusiu medzi vývojármi jadra Linux s implementáciou súboru patchov pre systém distribuovaného vykonávania vlákien (Distributed Thread Execution), ktorý umožňuje organizovať vykonávanie aplikácií na viacerých počítačoch s distribúciou a transparentnou migráciou vláken medzi hostiteľmi. Pomocou Popcorn môžu byť aplikácie spustené na jednom hostiteľovi a následne bez zastavenia prenosene na iný hostiteľ. V viacvláknových programoch je povolená migrácia na iné hostiteľské systémy jednotlivých vláken.
Na rozdiel od projektu , ktorý umožňuje uložiť stav procesu a pokračovať vo vykonávaní na inom systéme, Popcorn poskytuje bezproblémovú a dynamickú migráciu medzi hostiteľmi počas vykonávania aplikácie, nevyžaduje žiadne kroky od používateľa a zabezpečuje konzistenciu virtuálnej pamäte na všetkých hostiteľoch, na ktorých sa zároveň vykonávajú vlákna.
Softvérový stack Popcorn sa skladá z jadra Linux a s testami, ktoré demonštrujú, ako môže byť možné používať systémové volania Popcorn na migráciu vláken v distribuovaných aplikáciách. Na úrovni jadra sú navrhnuté rozšírenia k subsystému virtuálnej pamäte s implementáciou zdieľanej distribuovanej pamäte (distributed shared memory), ktorá umožňuje procesom na rôznych hostiteľoch pristupovať k spoločnému a konzistentnému virtuálnemu adresnému priestoru. Konzistencia strán virtuálnej pamäte je zabezpečená pomocou protokolu, ktorý replikovuje na hostiteľ stránky pamäte pri prístupe na čítanie a zrušuje stránky pamäte pri vykonávaní zápisu.
Interakcia medzi hostiteľmi prebieha pomocou spracovateľa správ fungujúceho na úrovni jadra, ktorý sa prenáša cez TCP-soket. Je poznamenané, že TCP/IP sa používa na zjednodušenie ladenia a testovania počas vývoja. Vývojári si uvedomujú, že z hľadiska bezpečnosti a výkonu nie je TCP/IP najlepším spôsobom prenosu obsahu štruktúr jadra a strán pamäte medzi hostiteľmi. Všetky hostiteľské systémy, na ktorých sa vykonávajú distribuované aplikácie, musia mať identickú úroveň dôvery. Po stabilizácii základných algoritmov bude použitý efektívnejší spôsob prenosu.
Popcorn sa vyvíja od roku 2014 ako výskumný projekt zameraný na skúmanie možností vytvárania distribuovaných aplikácií, ktorých prúdy môžu byť spúšťané na rôznych uzloch v výpočtových systémoch, v ktorých môžu byť kombinované jadrá založené na rôznych architektúrach inštrukčných súprav (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Navrhnutý súbor patchov pre vývojárov jadra Linux podporuje iba vykonávanie na hostiteľoch s CPU x86, ale existuje aj funkčnejšia verzia Popcorn Linux, ktorá umožňuje spúšťanie aplikácií na hostiteľoch s rôznymi architektúrami CPU (x86 a ARM). Na použitie Popcornu v heterogénnych prostrediach je potrebné použiť špeciálny na báze LLVM. Pri distribuovanom vykonávaní na hostiteľoch s jednou architektúrou nie je potrebná prekompilácia osobitným kompilátorom.
Okrem toho možno poznamenať niečo podobného projektu s implementáciou počiatočného prototypu API na spúšťanie podriadených procesov na iných počítačoch v klasteri (ako fork(), ale presúva vetvený proces na iný počítač).
Kód je napísaný v jazyku Rust a zatiaľ umožňuje klonovať iba najjednoduchšie procesy, v ktorých nie sú používané systémové zdroje, ako sú súbory. Pri vykonávaní volania telefork sa pamäť a s procesom súvisiace štruktúry klonujú na iný hostiteľ, na ktorom beží serverový spracovateľ (telepad). Pomocou ptrace sa odraz pamäte procesu serializuje a spolu so stavom procesu a registrami sa prenáša na iný hostiteľ. API tiež umožňuje ukladať stav procesu do súboru a obnoviť ho cez tento súbor.
Zdroj: opennet.ru
