Se ha presentado la primera versión pública del proyecto Multikernel Linux (mklinux-v7.0-mk2), que desarrolla una variante del núcleo de Linux, complementada con la capacidad de ejecutar múltiples instancias independientes del núcleo en un mismo ordenador físico sin el uso de hipervisores y virtualización. Cada instancia del núcleo tiene acceso directo a los recursos hardware y puede utilizarse para iniciar entornos del sistema aislados. La primera versión se basa en el núcleo Linux 7.0 y contiene la configuración de compilación «CONFIG_MULTIKERNEL», sin la cual el núcleo se convierte en completamente análogo al núcleo 7.0 estándar. De la arquitectura de CPU, por el momento, solo se admite x86_64.
Multikernel se presenta como un nuevo mecanismo de aislamiento que ocupa un lugar entre la virtualización utilizando hipervisores y el aislamiento de contenedores basado en un núcleo común. A diferencia de la virtualización, Multikernel no requiere el uso de un hipervisor, simplifica la creación de entornos para la ejecución aislada de aplicaciones individuales y permite lograr un alto rendimiento sin los costos adicionales de la virtualización. A diferencia de los contenedores, Multikernel proporciona un alto nivel de aislamiento y permite utilizar un núcleo separado en cada entorno aislado, cuyo cierre inesperado o explotación de vulnerabilidades no afecta a otros entornos.

El núcleo host asegura la distribución de los CPU, la memoria y los dispositivos PCI disponibles entre las instancias adicionales del núcleo que se ejecutan en paralelo. Cada instancia se ejecuta en un núcleo CPU dedicado separado, opera con los dispositivos asignados y tiene acceso a una zona de memoria física dedicada. La ejecución simultánea de múltiples núcleos se lleva a cabo sin virtualización, utilizando un controlador SMP que distribuye los CPU disponibles. Se admite la asignación dinámica de recursos a los entornos en ejecución y se garantiza un rendimiento predecible.
Debido a la eliminación de los costos de sobrecarga asociados a la virtualización, el rendimiento al utilizar Multikernel se evalúa como cercano al rendimiento de ejecución en hardware dedicado. Al usar Multikernel, no hay fase de transferencia de control entre máquinas virtuales (VM exit), no se utilizan páginas de memoria de segundo nivel, hay un modelo de dispositivos separado y traducción IOMMU. En comparación con un hipervisor, KVM al utilizar Multikernel se observa un aumento en el rendimiento de diversas llamadas y funciones del sistema de entre 1.07 a 2.5 veces (fork + exit — 1.07x, write() — 1.39x, AF_UNIX — 1.55x, Pipe — 2.18x, cambio de contexto — 2.50x), la capacidad de procesamiento y las latencias al trabajar con memoria se mantienen al mismo nivel.

Fuente: opennet.ru
