Popcorn vyvíjí distribuovaný systém spouštění vláken pro linuxové jádro.

Virginia Tech navrhl k diskusi vývojářům linuxového jádra sada patchů s implementací distribuovaného systému spouštění vláken Pražená kukuřice (Distributed Thread Execution), který umožňuje organizovat spouštění aplikací na několika počítačích s distribucí a transparentní migrací vláken mezi hostiteli. S Popcornem lze aplikace spouštět na jednom hostiteli a poté je bez přerušení přesunout na jiného hostitele. Ve vícevláknových programech je povolena migrace jednotlivých vláken na jiné hostitele.

Na rozdíl od projektu CRIUTím, že Popcorn umožňuje uložit stav procesu a obnovit jeho provádění na jiném systému, poskytuje bezproblémovou a dynamickou migraci mezi hostiteli během spouštění aplikací, nevyžaduje žádnou akci uživatele a zajišťuje konzistenci virtuální paměti napříč všemi hostiteli se souběžnými vlákny.

Formulář zásobníku softwaru pro popcorn záplaty do linuxového jádra a библиотека s testy demonstrujícími, jak lze systémová volání Popcorn použít k migraci vláken v distribuovaných aplikacích. Na úrovni jádra byla navržena rozšíření subsystému virtuální paměti s implementací distribuované sdílené paměti, 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. Soudržnost stránek virtuální paměti je zajištěna protokolem, který replikuje paměťové stránky na hostitele, když jsou čteny, a ruší paměťové stránky při zápisu.

Interakce mezi hostiteli se provádí pomocí handleru na úrovni jádra pro zprávy přenášené přes TCP soket. Je třeba poznamenat, že TCP/IP se používá ke zjednodušení ladění a testování během procesu vývoje. Vývojáři chápou, že z hlediska zabezpečení a výkonu není protokol TCP/IP nejlepším způsobem přenosu obsahu struktur jádra a stránek paměti mezi hostiteli. Všichni hostitelé s distribuovanými aplikacemi musí mít stejnou úroveň důvěryhodnosti. Po stabilizaci hlavních algoritmů bude použit efektivnější způsob dopravy.

Popcorn se od roku 2014 vyvíjí jako výzkumný projekt ke studiu možností vytváření distribuovaných aplikací, jejichž vlákna lze spouštět na různých uzlech v heterogenní výpočetní systémy, které mohou kombinovat jádra založená na různých architekturách instrukční sady (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Sada oprav navrhovaných vývojářům linuxového jádra podporuje spouštění pouze na hostitelích s x86 CPU, ale existuje také funkčnější verze Popcorn Linuxu, která umožňuje běh aplikací na hostitelích s různými architekturami CPU (x86 a ARM). Chcete-li používat Popcorn v heterogenních prostředích, musíte použít speciální překladač založené na LLVM. Při distribuovaném běhu na hostitelích se stejnou architekturou není nutné opětovné sestavení pomocí samostatného kompilátoru.

Popcorn vyvíjí distribuovaný systém spouštění vláken pro linuxové jádro.

Navíc lze poznamenat oznámení trochu podobný projekt Telefork s implementací počátečního prototypu API pro spouštění podřízených procesů na jiných počítačích v clusteru (jako fork(), ale přenáší rozvětvený proces na jiný počítač).
Kód je napsán v Rustu a umožňuje zatím pouze klonování velmi jednoduchých procesů, které nevyužívají systémové prostředky, jako jsou soubory. Když je uskutečněno telefork volání, paměť a struktury související s procesy jsou klonovány do jiného hostitele, na kterém běží obslužný program serveru (telepad). Pomocí ptrace je paměťový odraz procesu serializován a spolu se stavem procesu a registrů přenesen do jiného hostitele. Rozhraní API také umožňuje uložit stav procesu do souboru a obnovit jej prostřednictvím něj.

Zdroj: opennet.ru

Přidat komentář