Popcorn ontwikkelt een gedistribueerd threaduitvoeringssysteem voor de Linux-kernel.

Virginia Tech hij bood ter discussie door Linux-kernelontwikkelaars: een reeks patches met de implementatie van een gedistribueerd threaduitvoeringssysteem Popcorn (Distributed Thread Execution), waarmee u de uitvoering van applicaties op meerdere computers kunt organiseren met de distributie en transparante migratie van threads tussen hosts. Met Popcorn kunnen applicaties op de ene host worden gestart en vervolgens zonder onderbrekingen naar een andere host worden verplaatst. In multithreaded programma's is migratie van individuele threads naar andere hosts toegestaan.

In tegenstelling tot het project CRIUDoor toe te staan ​​dat de processtatus wordt opgeslagen en de uitvoering wordt hervat op een ander systeem, zorgt Popcorn voor een naadloze en dynamische migratie tussen hosts tijdens de uitvoering van applicaties, waarbij geen actie van de gebruiker vereist is en de consistentie van virtueel geheugen wordt gegarandeerd voor alle hosts die gelijktijdige threads uitvoeren.

Popcorn-softwarestackformulier pleisters naar de Linux-kernel en библиотека met tests die aantonen hoe Popcorn-systeemaanroepen kunnen worden gebruikt om threads in gedistribueerde applicaties te migreren. Op kernelniveau zijn uitbreidingen van het virtuele geheugensubsysteem voorgesteld met de implementatie van gedistribueerd gedeeld geheugen, waardoor processen op verschillende hosts toegang krijgen tot een gemeenschappelijke en consistente virtuele adresruimte. De coherentie van virtuele geheugenpagina's wordt verzekerd door een protocol dat geheugenpagina's repliceert naar de host wanneer ze worden gelezen en geheugenpagina's ongeldig maakt wanneer ze worden geschreven.

Interactie tussen hosts wordt uitgevoerd met behulp van een handler op kernelniveau voor berichten die via een TCP-socket worden verzonden. Opgemerkt wordt dat TCP/IP wordt gebruikt om het debuggen en testen tijdens het ontwikkelingsproces te vereenvoudigen. Ontwikkelaars begrijpen dat TCP/IP, vanuit een veiligheids- en prestatieperspectief, niet de beste manier is om de inhoud van kernelstructuren en geheugenpagina's tussen hosts over te dragen. Alle hosts waarop gedistribueerde applicaties draaien, moeten hetzelfde vertrouwensniveau hebben. Na stabilisatie van de belangrijkste algoritmen zal een efficiënter transportmiddel worden gebruikt.

Popcorn ontwikkelt zich sinds 2014 als een onderzoeksproject om de mogelijkheden te bestuderen van het creëren van gedistribueerde applicaties, waarvan de threads kunnen worden uitgevoerd op verschillende knooppunten in heterogeen computersystemen die kernen kunnen combineren op basis van verschillende instructieset-architecturen (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). De set patches die aan Linux-kernelontwikkelaars wordt voorgesteld, ondersteunt alleen uitvoering op hosts met een x86 CPU, maar er is ook een meer functionele versie van Popcorn Linux, waarmee applicaties kunnen worden uitgevoerd op hosts met verschillende CPU-architecturen (x86 en ARM). Om Popcorn in heterogene omgevingen te gebruiken, moet je een special compiler gebaseerd op LLVM. Bij gedistribueerd draaien op hosts met dezelfde architectuur is herbouwen met een aparte compiler niet vereist.

Popcorn ontwikkelt een gedistribueerd threaduitvoeringssysteem voor de Linux-kernel.

Bovendien kan het worden opgemerkt een aankondiging enigszins vergelijkbaar project Televork met de implementatie van een eerste prototype-API voor het starten van onderliggende processen op andere computers in het cluster (zoals fork(), maar brengt het gevorkte proces over naar een andere computer).
De code is geschreven in Rust en maakt tot nu toe alleen het klonen van zeer eenvoudige processen mogelijk die geen systeembronnen zoals bestanden gebruiken. Wanneer een telefork-oproep wordt gedaan, worden geheugen- en procesgerelateerde structuren gekloond naar een andere host waarop de serverhandler draait (telepad). Met behulp van ptrace wordt de geheugenreflectie van een proces geserialiseerd en, samen met de status van het proces en de registers, overgebracht naar een andere host. Met de API kunt u de processtatus ook in een bestand opslaan en via dit bestand herstellen.

Bron: opennet.ru

Voeg een reactie