La empresa china ByteDance, desarrolladora del servicio TikTok, publicó en la lista de correo de desarrolladores del núcleo de Linux parches con la implementación del sistema Parker (PARtitioned KERnel), que permite ejecutar en una computadora múltiples núcleos de Linux simultáneamente sin utilizar virtualización tradicional. En cuanto a las tareas que resuelve, Parker recuerda el proyecto Multikernel presentado hace unos días, pero se diferencia de este en arquitectura e implementación.
En Parker se utiliza la seccionación de los núcleos de CPU, memoria y dispositivos existentes. Cada instancia del núcleo se basa en una imagen común del núcleo, pero puede utilizar diferentes configuraciones y optimizaciones. El primer núcleo cargado (Boot Kernel) se encarga de la distribución y seccionamiento de los dispositivos de hardware. Las demás instancias del núcleo de Linux (Application Kernel) solo funcionan con los núcleos de CPU, la memoria y los dispositivos de entrada/salida asignados a ellas.
En la versión inicial, para reducir la sobrecarga y simplificar la implementación, no hay un mecanismo de control y todos los núcleos utilizan una única área de aislamiento (domain), es decir, un error en cualquier instancia del núcleo puede causar problemas en todo el sistema. En el futuro, se planea utilizar capacidades de hardware separadas para aislar las instancias del núcleo. Se menciona que Parker se aplica en computadoras con un gran número de núcleos de CPU, donde surgen problemas al escalar tareas.
Para la gestión, Parker implementa una interfaz basada en kernfs, y para cargar instancias adicionales del núcleo en áreas de memoria reservadas se utiliza kexec. Antes de arrancar núcleos adicionales, el núcleo primario libera los núcleos de CPU, reserva memoria física y desacopla los dispositivos PCI para su uso en el núcleo seccionado. Para la entrada/salida, cada núcleo debe tener un dispositivo PCIe asociado, como un almacenamiento NVMe o un adaptador de red. Una vez que se inicia una instancia del núcleo, no puede interactuar con otros núcleos.
Fuente: opennet.ru
