Politechnická univerzita Virgínie pro diskusi s vývojáři jádra Linux o sadě patchů implementujících systém distribuovaného vykonávání vláken (Distributed Thread Execution), který umožňuje organizovat vykonávání aplikací na několika počítačích s rozdělením a transparentní migrací vláken mezi hostiteli. Pomocí Popcorn mohou být aplikace spuštěny na jednom hostiteli a poté bez zastavení přesunuty na jiný hostitel. V mnohovláknových programech je povolena migrace jednotlivých vláken na jiné hostitele.
Na rozdíl od projektu , který umožňuje ukládat stav procesu a obnovit vykonávání na jiném systému, Popcorn poskytuje bezproblémovou a dynamickou migraci mezi hostiteli během vykonávání aplikace, aniž by vyžadoval zásah od uživatele a zajišťuje konzistenci virtuální paměti na všech hostitelích, na kterých se současně vykonávají vlákna.
Software Stack Popcorn tvoří pro jádro Linux a s testy, které ukazují, jak lze použít systémové volání Popcorn pro migraci vláken v distribuovaných aplikacích. Na úrovni jádra jsou navržena rozšíření pro subsystém virtuální paměti s realizací sdílené distribuované paměti (distributed shared memory), které umožňuje procesům na různých hostitelích přistupovat ke společnému a konzistentnímu virtuálnímu adresnímu prostoru. Konzistence stránek virtuální paměti je zajištěna protokolem, který replikuje stránky paměti na hostitele při přístupu k nim pro čtení a anuluje stránky paměti při provádění zápisu.
Interakce mezi hostiteli se provádí pomocí zpracovatele zpráv běžícího na úrovni jádra, které se přenášejí prostřednictvím TCP socketu. Je zdůrazněno, že TCP/IP se používá pro zjednodušení ladění a testování během vývoje. Vývojáři si uvědomují, že z hlediska bezpečnosti a výkonu není TCP/IP nejlepší metodou pro přenos obsahu struktur jádra a stránek paměti mezi hostiteli. Všechny hostitele, na nichž se vykonávají distribuované aplikace, musí mít identickou úroveň důvěry. Po stabilizaci základních algoritmů bude aplikován efektivnější způsob přenosu.
Popcorn se vyvíjí od roku 2014 jako výzkumný projekt zkoumání možností vytváření distribuovaných aplikací, jejichž toky mohou být vykonávány na různých uzlech v výpočetních systémech, ve kterých mohou být kombinována jádra založená na různých architekturách sad instrukcí (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Navrhovaný soubor patchů pro vývojáře jádra Linux podporuje pouze provádění na hostitelích s CPU x86, ale existuje také funkčnější varianta Popcorn Linux, která umožňuje provádět aplikace na hostitelích s různými architekturami CPU (x86 a ARM). Pro použití Popcornu v heterogenních prostředích je nutné použít speciální na bázi LLVM. Při distribuovaném provádění na hostitelích se stejnou architekturou není přebudování pomocí jiného kompilátoru nutné.
Dále lze zmínit něco podobného projektu s realizací základního prototypu API pro spouštění podřízených procesů na jiných počítačích v klastru (jako fork(), ale přenáší odštěpený proces na jiný počítač).
Kód je napsán v jazyce Rust a zatím umožňuje klonovat pouze ty nejjednodušší procesy, ve kterých nejsou používány systémové prostředky, jako jsou soubory. Při vykonávání volání telefork se paměť a s procesem spojené struktury klonují na jiný hostitel, na kterém běží serverový zpracovatel (telepad). Pomocí ptrace je paměť procesu serializována a spolu se stavem procesu a registry je přenesena na jiný hostitel. API také umožňuje ukládat stav procesu do souboru a obnovit jej skrze něj.
Zdroj: opennet.ru
