Для ядра Linux розвивається система розподіленого виконання потоків Popcorn

Політехнічний університет Віргінії запропонував для обговорення розробниками ядра 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. При розподіленому виконанні на хостах з однією архітектурою перескладання окремим компілятором не потрібно.

Для ядра Linux розвивається система розподіленого виконання потоків Popcorn

Крім того, можна відзначити анонс чимось схожого проекту Telefork з реалізацією початкового прототипу API для запуску дочірніх процесів на інших комп'ютерах в кластері (як fork(), але переносить процес, що відгалужується, на інший комп'ютер).
Код написаний мовою Rust і поки що дозволяє клонувати тільки найпростіші процеси, в яких не використовуються системні ресурси, такі як файли. При виконанні виклику telefork пам'ять та пов'язані з процесом структури клонуються на інший хост, на якому запущено серверний обробник (telepad). За допомогою ptrace відображення пам'яті процесу серіалізується і разом зі станом процесу регістрів переноситься на інший хост. API також дозволяє зберігати стан процесу файл і відновлювати через нього.

Джерело: opennet.ru

Додати коментар або відгук