Politechnika Wirginijska do omówienia zestaw łatek od deweloperów jądra Linux zawierających implementację systemu rozproszonego wykonywania wątków (Distributed Thread Execution), który umożliwia organizację wykonywania aplikacji na wielu komputerach z rozdzieleniem i przezroczystą migracją wątków między hostami. Dzięki Popcorn aplikacje mogą być uruchamiane na jednym hoście, a następnie bez zatrzymywania pracy przenoszone na inny host. W programach wielowątkowych dopuszcza się migrację na inne hosty poszczególnych wątków.
W odróżnieniu od projektu , który pozwala na zapisywanie stanu procesu i wznawianie wykonania na innym systemie, Popcorn zapewnia płynne i dynamiczne migracje między hostami w trakcie wykonania aplikacji, nie wymagając działań od użytkownika i zapewniając spójność pamięci wirtualnej na wszystkich hostach, na których jednocześnie wykonywane są wątki.
Stos oprogramowania Popcorn składa się z do jądra Linux oraz z testami, które demonstrują, jak można używać wywołań systemowych Popcorn do migracji wątków w rozproszenie wykonywanych aplikacjach. Na poziomie jądra zaproponowane zostały rozszerzenia do podsystemu pamięci wirtualnej z implementacją rozdzielonej pamięci (distributed shared memory), która umożliwia procesom na różnych hostach dostęp do wspólnej i spójnej przestrzeni adresowej. Spójność stron pamięci wirtualnej zapewniana jest dzięki protokołowi, który replikuje na hoście strony pamięci przy ich odczycie i unieważnia strony pamięci przy zapisach.
Interakcja między hostami odbywa się za pomocą działającego na poziomie jądra mechanizmu obsługi wiadomości, przesyłanych przez gniazdo TCP. Zauważa się, że TCP/IP jest wykorzystywane w celu uproszczenia debugowania i testowania w trakcie rozwoju. Deweloperzy rozumieją, że z punktu widzenia bezpieczeństwa i wydajności TCP/IP nie jest najlepszym sposobem przesyłania zawartości struktur jądra i stron pamięci między hostami. Wszystkie hosty, na których wykonywane są rozproszone aplikacje, muszą mieć identyczny poziom zaufania. Po stabilizacji podstawowych algorytmów zostanie zastosowany bardziej wydajny sposób transportu.
Popcorn rozwija się od 2014 roku jako projekt badawczy mający na celu zbadanie możliwości tworzenia rozproszonych aplikacji, których wątki mogą być wykonywane na różnych węzłach w systemach obliczeniowych, w których mogą być łączone rdzenie oparte na różnych architekturach zestawu instrukcji (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Proponowany deweloperom rdzeń Linux zbiór poprawek wspiera jedynie wykonanie na hostach z CPU x86, ale dostępna jest także bardziej funkcjonalna wersja Popcorn Linux, która umożliwia wykonywanie aplikacji na hostach z różnymi architekturami CPU (x86 i ARM). Aby korzystać z Popcorn w heterogenicznych środowiskach, należy wykorzystać specjalny oparty na LLVM. Przy rozproszonym wykonaniu na hostach z jedną architekturą ponowna kompilacja odrębnym kompilatorem nie jest wymagana.
Ponadto można zauważyć czegoś podobnego projektu z realizacją wstępnego prototypu API do uruchamiania procesów podrzędnych na innych komputerach w klastrze (jak fork(), ale przenosi odbiegający proces na inny komputer).
Kod jest napisany w języku Rust i obecnie umożliwia klonowanie tylko najprostszych procesów, w których nie są używane zasoby systemowe, takie jak pliki. Podczas wywołania telefork pamięć i powiązane z procesem struktury są klonowane na inny host, na którym działa serwerowy procesor (telepad). Przy pomocy ptrace odzwierciedlenie pamięci procesu jest serializowane i razem z stanem procesu oraz rejestrami przenoszone na inny host. API umożliwia również zapisywanie stanu procesu do pliku i przywracanie przez ten plik.
Źródło: opennet.ru
