Для ядра Linux развивается система распределённого выполнения потоков Popcorn
Политехнический университет Виргинии предложил для обсуждения разработчиками ядра Linux набор патчей с реализацией системы распределённого выполнения потоков Popcorn (Distributed Thread Execution), позволяющей организовать выполнение приложений на нескольких компьютерах с распределением и прозрачной миграцией потоков между хостами. При помощи Popcorn приложения могут быть запущены на одном хосте, после чего без остановки работы перемещены на другой хост. В многопоточных программах допускается миграция на другие хосты отдельных потоков.
В отличие от проекта CRIU, позволяющего сохранять состояние процесса и возобновлять выполнение на другой системе, Popcorn предоставляет бесшовную и динамическую миграцию между хостами в процессе выполнения приложения, не требуя действий от пользователя и обеспечивая согласованность виртуальной памяти на всех хостах, на которых одновременного выполняются потоки.
Программный стек Popcorn образуют патчи к ядру Linux и библиотека с тестами, демонстрирующими как можно использовать системные вызовы Popcorn для миграции потоков в распределённо исполняемых приложениях. На уровне ядра предложены расширения к подсистеме виртуальной памяти с реализацией разделяемой распределённой памяти (distributed shared memory), позволяющей процессам на разных хостах обращаться к общему и согласованному виртуальному адресному пространству. Согласованность страниц виртуальной памяти обеспечивается при помощи протокола, который реплицирует на хост страницы памяти при обращении к ним на чтение и аннулирует страницы памяти при выполнении записи.
Взаимодействие между хостами осуществляется при помощи работающего на уровне ядра обработчика сообщений, передаваемых через TCP-сокет. Отмечается, что TCP/IP используется для упрощения отладки и тестирования в процессе разработки. Разработчики понимают, что с точки зрения безопасности и производительности TCP/IP не лучший способ передачи содержимого структур ядра и страниц памяти между хостами. Все хосты, на которых выполняются распределённые приложения, должны иметь идентичный уровень доверия. После стабилизации основных алгоритмов будет применён более эффективный вид транспорта.
Popcorn развивается с 2014 года как исследовательский проект по изучению возможностей создания распределённых приложений, потоки которых могут выполняться на разных узлах в гетерогенных вычислительных системах, в которых могут комбинироваться ядра на базе различных архитектур набора команд (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Предложенный разработчикам ядра Linux набор патчей поддерживает только выполнение на хостах с CPU x86, но имеется и более функциональный вариант Popcorn Linux, который позволяет выполнять приложения на хостах с разными архитектурами CPU (x86 и ARM). Для использования Popcorn в гетерогенных окружениях необходимо использовать специальный компилятор на основе LLVM. При распределённом выполнении на хостах с одной архитектурой пересборка отдельным компилятором не требуется.
Кроме того, можно отметить анонс чем-то похожего проекта Telefork с реализацией начального прототипа API для запуска дочерних процессов на других компьютерах в кластере (как fork(), но переносит ответвляемый процесс на другой компьютер).
Код написан на языке Rust и пока позволяет клонировать только самые простые процессы, в которых не используются системные ресурсы, такие как файлы. При выполнении вызова telefork память и связанные с процессом структуры клонируются на другой хост, на котором запущен серверный обработчик (telepad). При помощи ptrace отражение памяти процесса сериализируется и вместе с состоянием процесса и регистров переносится на другой хост. API также позволяет сохранять состояние процесса в файл и восстанавливать через него.