ПроХостер > блог > интернет вести > Попцорн развија дистрибуирани систем за извршавање нити за Линук кернел.
Попцорн развија дистрибуирани систем за извршавање нити за Линук кернел.
Политехнический университет Виргинии предложио для обсуждения разработчиками ядра Linux набор патчей с реализацией системы распределённого выполнения потоков Кокице (Distributed Thread Execution), позволяющей организовать выполнение приложений на нескольких компьютерах с распределением и прозрачной миграцией потоков между хостами. При помощи Popcorn приложения могут быть запущены на одном хосте, после чего без остановки работы перемещены на другой хост. В многопоточных программах допускается миграция на другие хосты отдельных потоков.
В отличие от проекта ЦРИУ, позволяющего сохранять состояние процесса и возобновлять выполнение на другой системе, 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 также позволяет сохранять состояние процесса в файл и восстанавливать через него.