Proponen el desarrollo de Popcorn en el Kernel de Linux
Si lo primero que se te vino a la mente fue la popular aplicación que permite visualizar contenido por medio del protocolo de torrent, me temo decirte que no, no es así, de lo que hablamos es sobre los desarrolladores de la Universidad Politécnica de Virginia que realizaron hace poco una propuesta para llevarla a discusión con los desarrolladores del kernel de Linux sobre un conjunto de parches con la implementación del sistema Popcorn (Distributed Thread Execution) para distribuir hilos.
Este sistema permite organizar la ejecución de aplicaciones en varias computadoras con la distribución y migración transparente de flujos entre hosts. Con Popcorn, las aplicaciones se pueden iniciar en un host, después de lo cual se pueden transferir a otro host sin interrupción. En los programas multiproceso, se permite la migración a otros hosts de subprocesos individuales.
Sobre Popcorn
A diferencia del proyecto CRIU, que permite guardar el estado del proceso y reanudar la ejecución en otro sistema, Popcorn proporciona una migración transparente y dinámica entre los hosts durante la ejecución de la aplicación, sin requerir la acción del usuario y asegurando la coherencia de la memoria virtual en todos los hosts en los que los subprocesos se ejecutan simultáneamente.
Popcorn proporciona una pila parches al kernel de Linux y la biblioteca con una prueba que muestra cómo se pueden utilizar las llamadas al sistema de Popcorn de los flujos migratorios en unas aplicaciones ejecutables distribuidos.
A nivel del núcleo, se proponen extensiones al subsistema de memoria virtual con la implementación de memoria compartida distribuida, lo que permite que los procesos en diferentes hosts accedan a un espacio de direcciones virtual común y consistente. La consistencia de las páginas de memoria virtual está garantizada por un protocolo que replica las páginas de memoria al host cuando se accede a ellas para leer e invalida las páginas de memoria cuando se graba.
La interacción entre los hosts se lleva a cabo utilizando un controlador de mensajes a nivel de núcleo transmitido a través de un socket TCP. Se observa que TCP/IP se utiliza para simplificar la depuración y las pruebas durante el desarrollo. Los desarrolladores entienden que, en términos de seguridad y rendimiento, TCP/IP no es la mejor manera de transferir el contenido de las estructuras del núcleo y las páginas de memoria entre los hosts. Todos los hosts que ejecutan aplicaciones distribuidas deben tener el mismo nivel de confianza. Después de la estabilización de los algoritmos básicos, se aplicará un modo de transporte más eficiente.
Desde 2014, Popcorn se ha desarrollado como un proyecto de investigación para estudiar las posibilidades de crear aplicaciones distribuidas, cuyos hilos se pueden ejecutar en diferentes nodos en sistemas informáticos heterogéneos, en los que los núcleos se pueden combinar en función de varias arquitecturas de conjuntos de comandos (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA).
El conjunto de parches propuesto a los desarrolladores del kernel de Linux solo admite la ejecución en hosts con una CPU x86, pero también hay una versión más funcional de Popcorn Linux que permite que las aplicaciones se ejecuten en hosts con diferentes arquitecturas de CPU (x86 y ARM).
Para usar Popcorn en entornos heterogéneos, debe usar un compilador especialbasado en LLVM. Con la ejecución distribuida en hosts con la misma arquitectura, no se requiere la reconstrucción por un compilador separado.
Además, podemos notar el anuncio de algo similar al proyecto Telefork con la implementación de la API prototipo inicial para iniciar procesos secundarios en otras computadoras en el clúster (como fork (), pero transfiere el proceso de ramificación a otra computadora).
El código está escrito en Rust y hasta ahora permite clonar solo los procesos más simples que no usan recursos del sistema, como archivos. Al realizar 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 del 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 de un proceso en un archivo y restaurarlo a través de él.
Fuente: https://lkml.org/