Popcorn está desarrollando un sistema de ejecución de subprocesos distribuidos para el kernel de Linux.

Virginia Tech propuesto para discusión por parte de los desarrolladores del kernel de Linux, un conjunto de parches con la implementación de un sistema de ejecución de subprocesos distribuidos Palomitas de maíz (Ejecución de subprocesos distribuidos), que le permite organizar la ejecución de aplicaciones en varias computadoras con la distribución y migración transparente de subprocesos entre hosts. Con Popcorn, las aplicaciones se pueden iniciar en un host y luego trasladarse a otro host sin interrupción. En programas multiproceso, se permite la migración de subprocesos individuales a otros hosts.

A diferencia del proyecto CRIUAl permitir que se guarde el estado del proceso y se reanude la ejecución en otro sistema, Popcorn proporciona una migración fluida y dinámica entre hosts durante la ejecución de la aplicación, sin requerir ninguna acción del usuario y garantizando la coherencia de la memoria virtual en todos los hosts que ejecutan subprocesos simultáneos.

Formulario de pila de software de palomitas de maíz parches al kernel de Linux y библиотека con pruebas que demuestran cómo se pueden utilizar las llamadas al sistema Popcorn para migrar subprocesos en aplicaciones distribuidas. A nivel del kernel, se han propuesto extensiones al subsistema de memoria virtual con la implementación de memoria compartida distribuida, que permite que procesos en diferentes hosts accedan a un espacio de direcciones virtuales común y consistente. La coherencia de las páginas de memoria virtual está garantizada por un protocolo que replica las páginas de memoria en el host cuando se leen e invalida las páginas de memoria cuando se escriben.

La interacción entre hosts se lleva a cabo mediante un controlador a nivel de kernel para mensajes transmitidos a través de un socket TCP. Cabe señalar que TCP/IP se utiliza para simplificar la depuración y las pruebas durante el proceso de desarrollo. Los desarrolladores entienden que, desde una perspectiva de seguridad y rendimiento, TCP/IP no es la mejor manera de transferir el contenido de las estructuras del kernel y las páginas de memoria entre hosts. Todos los hosts que ejecutan aplicaciones distribuidas deben tener el mismo nivel de confianza. Después de la estabilización de los algoritmos principales, se utilizará un modo de transporte más eficiente.

Popcorn se viene desarrollando desde 2014 como un proyecto de investigación para estudiar las posibilidades de crear aplicaciones distribuidas, cuyos hilos puedan ejecutarse en diferentes nodos en heterogéneo Sistemas informáticos que pueden combinar núcleos basados ​​en diferentes arquitecturas de conjuntos de instrucciones (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). El conjunto de parches propuestos a los desarrolladores del kernel de Linux sólo admite la ejecución en hosts con una CPU x86, pero también existe una versión más funcional de Popcorn Linux, que permite ejecutar aplicaciones en hosts con diferentes arquitecturas de CPU (x86 y ARM). Para utilizar Popcorn en ambientes heterogéneos, es necesario utilizar un especial compilador basado en LLVM. Cuando se ejecuta de forma distribuida en hosts con la misma arquitectura, no es necesaria la reconstrucción con un compilador independiente.

Popcorn está desarrollando un sistema de ejecución de subprocesos distribuidos para el kernel de Linux.

Además, se puede señalar anuncio proyecto algo similar telefork con la implementación de un prototipo de API inicial para iniciar procesos secundarios en otras computadoras del clúster (como fork(), pero transfiere el proceso bifurcado a otra computadora).
El código está escrito en Rust y hasta el momento sólo permite la clonación de procesos muy simples que no utilizan recursos del sistema como archivos. Cuando se realiza una llamada de telefork, la memoria y las estructuras relacionadas con el proceso se clonan en otro host que ejecuta el controlador del servidor (telepad). Usando ptrace, el reflejo de la memoria de un proceso se serializa y, junto con el estado del proceso y los registros, se transfiere a otro host. La API también le permite guardar el estado del proceso en un archivo y restaurarlo a través de él.

Fuente: opennet.ru

Añadir un comentario