Noticia Multikernel, una excelente utilidad para ejecutar núcleos múltiples sin virtualización

Multikernel Linux


El año pasado hablamos aqui en el blog sobre una propuesta que realizaba ByteDance (creadora de TikTok), sobre una utilidad llamada Parker (PARtitioned KERnel), una tecnología experimental que permite ejecutar varios kernels de Linux de manera simultánea. Y ahora, poco mas de año y medio despues, se presenta una nueva utilidad pública del proyecto» Multikernel Linux (mklinux-v7.0-mk2)».

Este desarrollo presenta una variante especializada del núcleo de Linux que introduce una capacidad de ejecutar múltiples instancias de kernel independientes y simultáneas dentro de un mismo servidor físico. Al operar directamente sobre el bare metal, esta tecnología elimina por completo la necesidad de hipervisores o capas de virtualización, otorgando a cada instancia acceso directo a la memoria, la CPU y los dispositivos asignados.

Basado en el recién lanzado kernel de Linux 7.0, el proyecto permite habilitar esta función mediante el parámetro de configuración CONFIG_MULTIKERNEL. Si esta opción se desactiva, el núcleo resultante es exactamente idéntico y se comporta como el Linux 7.0 estándar. Actualmente, esta primera versión (v7.0-mk2) cuenta con soporte exclusivo para arquitecturas x86_64 y está diseñada para cubrir la brecha de rendimiento y seguridad que existe entre la virtualización tradicional y el aislamiento de contenedores.

Aislamiento sin penalización de rendimiento​


El mayor problema de la virtualización es el «impuesto» de rendimiento que cobran los hipervisores. En contraste, Multikernel Linux elimina las transiciones de salida de las máquinas virtuales (VM exit), la traducción de memoria de segundo nivel y la sobrecarga generada por los modelos de dispositivos.

Según los datos de rendimiento publicados tras pruebas en procesadores Xeon Gold 5418Y (Sapphire Rapids), el sistema multikernel demuestra un aumento dramático en la velocidad de ejecución frente a los invitados KVM. Por ejemplo, el cambio de contexto entre procesos es 2,5 veces más rápido, la latencia de tuberías (Pipes) se reduce a más de la mitad (2,18x), y las llamadas al sistema base, como la lectura y escritura, ganan más de un 25% de velocidad de respuesta.

Frente a los contenedores Docker tradicionales, Multikernel ofrece un blindaje superior, dado que los contenedores comparten el mismo núcleo del anfitrión, una vulnerabilidad a nivel de kernel, un bloqueo (panic) o una saturación de bloqueos internos afecta a todos los inquilinos. En el ecosistema de Multikernel, cada entorno tiene su propio núcleo independiente, es decir si una instancia sufre un colapso crítico, las demás siguen funcionando sin enterarse, garantizando un entorno aislado ideal para ejecutar desde servidores web hasta cargas intensivas de entrenamiento de inteligencia artificial (Machine Learning) en el mismo hardware.

Asignación Dinámica y Orquestación con Kerf​


El funcionamiento de Multikernel Linux se basa en un núcleo anfitrión que actúa como administrador de un gran conjunto de recursos (CPUs, memoria RAM y dispositivos PCI). Utilizando la estructura existente del árbol de dispositivos (accesible en /sys/fs/multikernel/), el núcleo talla este conjunto y lanza «núcleos hijos» a través del subsistema nativo kexec_file_load(). A través de las funciones de conexión en caliente (hotplug) de Linux, estos recursos pueden moverse dinámicamente entre instancias sin requerir un reinicio del servidor, asegurando un rendimiento predecible y ajustable en tiempo real.

Para orquestar este ecosistema, los desarrolladores han presentado la herramienta de línea de comandos Kerf. Esta utilidad gestiona el ciclo de vida completo de las instancias, apoyándose en módulos complementarios de código abierto. Uno de ellos es Lazy CMA, encargado de asignar memoria física contigua en tiempo de ejecución sin necesidad de configuraciones previas al arranque.

El otro pilar es DAXFS, un módulo que permite a las instancias compartir sistemas de archivos directamente en memoria; gracias a esto, Kerf puede arrancar un núcleo hijo directamente dentro de una imagen de contenedor Docker, aprovechando su sistema de archivos sin necesidad de capas de emulación y utilizando descriptores en memoria para la interconexión de redes sin copia de datos.

Cabe mencionar que esta primera entrega ha superado pruebas intensivas de estabilidad bajo arquitecturas de paginación de 5 niveles y KASLR activo, demostrando que la recuperación de recursos es completamente segura incluso cuando un núcleo hijo colapsa.

Al permitir que cargas de trabajo que colisionaban por los bloqueos del sistema (como un gran número de procesos unlink o rename sobre una misma caché) se dividan en núcleos separados alineados con los zócalos del procesador físico, Multikernel Linux demuestra poder escalar más allá de la barrera de rendimiento que impone un núcleo monolítico único, abriendo una nueva era en la consolidación de servidores y la nube de alto rendimiento.

Finalmente, si estas interesado en poder conocer mas al respecto, puedes consultar los detalles en el siguiente enlace.

Continúar leyendo...