Popcorn entwickelt ein verteiltes Thread-Ausführungssystem für den Linux-Kernel.

Virginia Tech vorgeschlagen zur Diskussion durch Linux-Kernel-Entwickler eine Reihe von Patches mit der Implementierung eines verteilten Thread-Ausführungssystems Popcorn (Distributed Thread Execution), mit dem Sie die Ausführung von Anwendungen auf mehreren Computern mit der Verteilung und transparenten Migration von Threads zwischen Hosts organisieren können. Mit Popcorn können Anwendungen auf einem Host gestartet und dann ohne Unterbrechung auf einen anderen Host verschoben werden. In Multithread-Programmen ist die Migration einzelner Threads auf andere Hosts zulässig.

Anders als das Projekt CRIUDurch die Möglichkeit, den Prozessstatus zu speichern und die Ausführung auf einem anderen System fortzusetzen, ermöglicht Popcorn eine nahtlose und dynamische Migration zwischen Hosts während der Anwendungsausführung, erfordert keine Benutzeraktion und gewährleistet die Konsistenz des virtuellen Speichers auf allen Hosts, auf denen gleichzeitig Threads ausgeführt werden.

Popcorn-Software-Stack-Formular Flecken zum Linux-Kernel und библиотека mit Tests, die zeigen, wie Popcorn-Systemaufrufe zum Migrieren von Threads in verteilten Anwendungen verwendet werden können. Auf Kernel-Ebene wurden Erweiterungen des virtuellen Speichersubsystems durch die Implementierung eines verteilten gemeinsam genutzten Speichers vorgeschlagen, der es Prozessen auf verschiedenen Hosts ermöglicht, auf einen gemeinsamen und konsistenten virtuellen Adressraum zuzugreifen. Die Kohärenz der virtuellen Speicherseiten wird durch ein Protokoll sichergestellt, das Speicherseiten beim Lesen auf dem Host repliziert und Speicherseiten beim Schreiben ungültig macht.

Die Interaktion zwischen Hosts erfolgt über einen Handler auf Kernel-Ebene für Nachrichten, die über einen TCP-Socket übertragen werden. Es wird darauf hingewiesen, dass TCP/IP verwendet wird, um das Debuggen und Testen während des Entwicklungsprozesses zu vereinfachen. Entwickler verstehen, dass TCP/IP aus Sicherheits- und Leistungssicht nicht die beste Möglichkeit ist, den Inhalt von Kernelstrukturen und Speicherseiten zwischen Hosts zu übertragen. Alle Hosts, auf denen verteilte Anwendungen ausgeführt werden, müssen über die gleiche Vertrauensstufe verfügen. Nach der Stabilisierung der Hauptalgorithmen wird ein effizienteres Transportmittel verwendet.

Popcorn entwickelt sich seit 2014 als Forschungsprojekt zur Untersuchung der Möglichkeiten zur Erstellung verteilter Anwendungen, deren Threads auf verschiedenen Knoten in ausgeführt werden können heterogen Computersysteme, die Kerne basierend auf unterschiedlichen Befehlssatzarchitekturen (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA) kombinieren können. Die den Linux-Kernel-Entwicklern vorgeschlagenen Patches unterstützen nur die Ausführung auf Hosts mit einer x86-CPU, es gibt jedoch auch eine funktionalere Version von Popcorn Linux, die die Ausführung von Anwendungen auf Hosts mit unterschiedlichen CPU-Architekturen (x86 und ARM) ermöglicht. Um Popcorn in heterogenen Umgebungen verwenden zu können, müssen Sie ein spezielles verwenden Compiler basierend auf LLVM. Bei verteilter Ausführung auf Hosts mit gleicher Architektur ist ein Neuaufbau mit einem separaten Compiler nicht erforderlich.

Popcorn entwickelt ein verteiltes Thread-Ausführungssystem für den Linux-Kernel.

Darüber hinaus kann darauf hingewiesen werden Ankündigung etwas ähnliches Projekt Telegabel mit der Implementierung einer ersten Prototyp-API zum Starten von untergeordneten Prozessen auf anderen Computern im Cluster (wie fork(), überträgt aber den gegabelten Prozess auf einen anderen Computer).
Der Code ist in Rust geschrieben und erlaubt bisher nur das Klonen sehr einfacher Prozesse, die keine Systemressourcen wie Dateien nutzen. Wenn ein Telefork-Aufruf erfolgt, werden Speicher- und prozessbezogene Strukturen auf einen anderen Host geklont, auf dem der Server-Handler (Telepad) ausgeführt wird. Mithilfe von ptrace wird die Speicherreflexion eines Prozesses serialisiert und zusammen mit dem Status des Prozesses und der Register an einen anderen Host übertragen. Mit der API können Sie außerdem den Prozessstatus in einer Datei speichern und über diese wiederherstellen.

Source: opennet.ru

Kommentar hinzufügen