Политехнически университет Виргиния за обсъждане от разработчиците на ядрото на 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. При разпределено изпълнение на хост устройства с една и съща архитектура, повторното компилиране с отделен компилатор не е необходимо.
Освен това, може да се отбележи на нещо подобно на проекта с реализация на начален прототип на API за стартиране на дъщерни процеси на други компютри в кластер (като fork(), но прехвърлящия процес на друг компютър).
Кодът е написан на езика Rust и за момента позволява клонирането само на най-простите процеси, в които не се използват системни ресурси като файлове. При извикване на telefork, паметта и свързаните със процеса структури се клонират на друг хост, на който е стартиран сървърният обработчик (telepad). С помощта на ptrace, отражението на паметта на процеса се сериализира и заедно със състоянието на процеса и регистрите се прехвърля на друг хост. API също така позволява запазването на състоянието на процеса в файл и възстановяването му чрез него.
Източник: opennet.ru
