ProHoster > Блог > интернет новини > Popcorn разработва разпределена система за изпълнение на нишки за ядрото на Linux.
Popcorn разработва разпределена система за изпълнение на нишки за ядрото на Linux.
Virginia Tech Той предложи за обсъждане от разработчиците на ядрото на Linux, набор от корекции с внедряване на система за изпълнение на разпределени нишки Пуканки (Разпределено изпълнение на нишки), което ви позволява да организирате изпълнението на приложения на няколко компютъра с разпределение и прозрачна миграция на нишки между хостове. С Popcorn приложенията могат да се стартират на един хост и след това да се преместят на друг хост без прекъсване. В многонишкови програми е позволено мигрирането на отделни нишки към други хостове.
За разлика от проекта CRIUКато позволява запазване на състоянието на процеса и възобновяване на изпълнението на друга система, Popcorn осигурява безпроблемна и динамична миграция между хостове по време на изпълнение на приложението, като не изисква действие от страна на потребителя и осигурява съгласуваност на виртуалната памет във всички хостове, изпълняващи едновременно нишки.
Формуляр за софтуерен стек на Popcorn лепенки към ядрото на Linux и библиотека с тестове, демонстриращи как системните повиквания на Popcorn могат да се използват за мигриране на нишки в разпределени приложения. На ниво ядро бяха предложени разширения на подсистемата на виртуалната памет с внедряването на разпределена споделена памет, която позволява на процеси на различни хостове да имат достъп до общо и последователно виртуално адресно пространство. Кохерентността на страниците с виртуална памет се осигурява от протокол, който репликира страниците с памет към хоста, когато се четат, и обезсилва страниците с памет, когато се записват.
Взаимодействието между хостове се осъществява с помощта на манипулатор на ниво ядро за съобщения, предавани чрез TCP сокет. Отбелязва се, че TCP/IP се използва за опростяване на отстраняването на грешки и тестването по време на процеса на разработка. Разработчиците разбират, че от гледна точка на сигурността и производителността TCP/IP не е най-добрият начин за прехвърляне на съдържанието на структури на ядрото и страници с памет между хостове. Всички хостове, работещи с разпределени приложения, трябва да имат едно и също ниво на доверие. След стабилизиране на основните алгоритми ще се използва по-ефективен вид транспорт.
Popcorn се развива от 2014 г. като изследователски проект за изследване на възможностите за създаване на разпределени приложения, чиито нишки могат да се изпълняват на различни възли в разнородни изчислителни системи, които могат да комбинират ядра на базата на различни архитектури на набори от инструкции (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Наборът от корекции, предложен на разработчиците на ядрото на Linux, поддържа изпълнение само на хостове с x86 CPU, но има и по-функционална версия на Popcorn Linux, която позволява на приложенията да работят на хостове с различни CPU архитектури (x86 и ARM). За да използвате Popcorn в разнородни среди, трябва да използвате специален компилатор базиран на LLVM. Когато се изпълнява разпределено на хостове със същата архитектура, не е необходимо повторно изграждане с отделен компилатор.
Освен това може да се отбележи обявление донякъде подобен проект Телевилка с внедряване на първоначален прототип API за стартиране на дъщерни процеси на други компютри в клъстера (като fork(), но прехвърля разклонения процес на друг компютър).
Кодът е написан на Rust и засега позволява клониране само на много прости процеси, които не използват системни ресурси като файлове. Когато се направи телефорк повикване, паметта и структурите, свързани с процеса, се клонират към друг хост, изпълняващ манипулатора на сървъра (telepad). Използвайки ptrace, отражението на паметта на процес се сериализира и заедно със състоянието на процеса и регистрите се прехвърля на друг хост. API също ви позволява да запазите състоянието на процеса във файл и да го възстановите чрез него.