Für den Linux-Kernel wird ein System zur verteilten Ausführung von Threads namens Popcorn entwickelt

Virginia Polytechnic Institute Alternativen zu den Begriffen „whitelist/blacklist“ und „master/slave“ vor, die für die Verwendung in Spezifikationen bevorzugt werden – anstelle von „master/slave“ wird empfohlen, „primary/secondary“, „leader/follower“, um von den Entwicklern des Linux-Kernels eine Reihe von Patches zur Implementierung eines Distributed Thread Execution Systems zu diskutieren Popcorn (Distributed Thread Execution), das die Ausführung von Anwendungen auf mehreren Computern mit Verteilung und nahtloser Migration von Threads zwischen Hosts ermöglicht. Mithilfe von Popcorn können Anwendungen auf einem Host gestartet und dann ohne Unterbrechung auf einen anderen Host verschoben werden. In Multithread-Anwendungen ist eine Migration einzelner Threads zu anderen Hosts zulässig.

Im Gegensatz zum Projekt CRIU, das es ermöglicht, den Zustand eines Prozesses zu speichern und die Ausführung auf einem anderen System fortzusetzen, bietet Popcorn eine nahtlose und dynamische Migration zwischen Hosts während der Ausführung der Anwendung, ohne dass der Benutzer eingreifen muss, und gewährleistet die Konsistenz des virtuellen Speichers auf allen Hosts, auf denen Threads gleichzeitig ausgeführt werden.

Der Software-Stack von Popcorn besteht aus Patches dem Linux-Kernel und einer Bibliothek mit Tests, die zeigen, wie man Systemaufrufe von Popcorn zur Migration von Threads in verteilten Anwendungen nutzen kann. Auf der Kernel-Ebene werden Erweiterungen für das virtuelle SpeicherSubsystem vorgeschlagen, mit der Implementierung von Distributed Shared Memory, das es Prozessen auf verschiedenen Hosts ermöglicht, auf den gleichen und konsistenten virtuellen Adressraum zuzugreifen. Die Konsistenz der Seiten des virtuellen Speichers wird durch ein Protokoll gewährleistet, das beim Zugriff auf die Seiten für das Lesen deren Seiten im Host repliziert und beim Schreiben ungültig macht.

Die Interaktion zwischen Hosts erfolgt über einen auf Kernel-Ebene arbeitenden Nachrichtenbehandler, der über einen TCP-Socket kommuniziert. Es wird angemerkt, dass TCP/IP zur Vereinfachung der Fehlersuche und Tests während der Entwicklung verwendet wird. Die Entwickler sind sich bewusst, dass TCP/IP aus Sicherheits- und Leistungsgründen nicht der beste Weg ist, um Inhalte aus Kernelsstrukturen und Speicherseiten zwischen Hosts zu übertragen. Alle Hosts, auf denen verteilte Anwendungen ausgeführt werden, müssen ein identisches Vertrauensniveau aufweisen. Nach der Stabilisierung der grundlegenden Algorithmen wird eine effizientere Transportmethode angewendet.

Popcorn entwickelt sich seit 2014 als Forschungsprojekt zur Untersuchung der Möglichkeiten zur Erstellung verteilter Anwendungen, deren Ströme auf verschiedenen Knoten in heterogenen Rechnungssystemen ausgeführt werden können, in denen Kerne auf Basis verschiedener Befehlssatzarchitekturen (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) kombiniert werden können. Das den Entwicklern des Linux-Kernels vorgeschlagene Patchset unterstützt nur die Ausführung auf Hosts mit x86-CPU, jedoch gibt es auch eine funktionsreichere Variante namens Popcorn Linux, die es ermöglicht, Anwendungen auf Hosts mit unterschiedlichen CPU-Architekturen (x86 und ARM) auszuführen. Um Popcorn in heterogenen Umgebungen zu nutzen, muss ein spezieller Compiler auf der Basis von LLVM verwendet werden. Bei der verteilten Ausführung auf Hosts mit einer Architektur ist eine erneute Kompilierung mit einem separaten Compiler nicht erforderlich.

Für den Linux-Kernel wird ein System zur verteilten Ausführung von Threads namens Popcorn entwickelt

Darüber hinaus kann erwähnt werden, Ankündigung eines ähnlichen Projekts Telefork mit der Implementierung eines Anfangsprototyps der API zur Ausführung von Kindprozessen auf anderen Computern im Cluster (ähnlich wie fork(), jedoch wird der abgezweigte Prozess auf einen anderen Computer übertragen).
Der Code ist in Rust geschrieben und ermöglicht derzeit das Klonen nur der einfachsten Prozesse, in denen keine Systemressourcen wie Dateien verwendet werden. Bei der Ausführung des Aufrufs telefork wird der Speicher und die mit dem Prozess verbundenen Strukturen auf einen anderen Host kopiert, auf dem der Serverprozessor (telepad) läuft. Mithilfe von ptrace wird der Speicherinhalt des Prozesses serialisiert und zusammen mit dem Zustand des Prozesses und den Registern auf einen anderen Host übertragen. Die API ermöglicht es auch, den Zustand des Prozesses in einer Datei zu speichern und von dort wiederherzustellen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4