Foi lançado o primeiro release público do projeto Multikernel Linux (mklinux-v7.0-mk2), que desenvolve uma variante do núcleo Linux, adicionando a capacidade de executar várias instâncias independentes do núcleo em um único computador físico sem o uso de hipervisores e virtualização. Cada instância do núcleo tem acesso direto aos recursos de hardware e pode ser usada para executar sistemas isolados. O primeiro release é baseado no núcleo Linux 7.0 e contém a configuração de montagem "CONFIG_MULTIKERNEL", que, quando desativada, torna o núcleo completamente análogo ao núcleo 7.0 padrão. Até agora, apenas a arquitetura x86_64 é suportada.
O Multikernel é apresentado como um novo mecanismo de isolamento que ocupa um espaço entre virtualização via hipervisor e isolamento de contêineres baseado em um núcleo compartilhado. Diferente da virtualização, o Multikernel não requer o uso de hipervisor, simplifica a criação de ambientes para a execução isolada de aplicativos individuais e permite alcançar alto desempenho sem as sobrecargas da virtualização. Ao contrário dos contêineres, o Multikernel oferece um alto nível de isolamento e permite o uso de um núcleo separado em cada ambiente isolado, cujo encerramento acidental ou exploração de vulnerabilidades não afeta outros ambientes.

O núcleo host garante a distribuição dos CPUs, memória e dispositivos PCI disponíveis entre as instâncias adicionais do núcleo que operam em paralelo. Cada instância é executada em um núcleo de CPU dedicado, funciona com dispositivos atribuídos a ela e tem acesso a uma área dedicada de memória física. A execução simultânea de múltiplos núcleos ocorre sem virtualização, utilizando um processador SMP que distribui os CPUs disponíveis. Suporte é dado à alocação dinâmica de recursos para os ambientes em execução e à garantia de desempenho previsível.
Graças à exclusão das sobrecargas típicas da virtualização, o desempenho ao utilizar o Multikernel é avaliado como próximo ao desempenho em hardware dedicado. Com o uso do Multikernel, não há fase de transferência de controle entre as máquinas virtuais (VM exit), não são utilizadas páginas de memória de segundo nível, há um modelo de dispositivos separado e a tradução IOMMU não é necessária. Em comparação com o hipervisor KVM com o uso do Multikernel, observa-se um aumento no desempenho de várias chamadas de sistema e funções de 1,07 a 2,5 vezes (fork + exit — 1,07x, write() — 1,39x, AF_UNIX — 1,55x, Pipe — 2,18x, troca de contexto — 2,50x), a largura de banda e a latência ao trabalhar com a memória estão em níveis equivalentes.

Fonte: opennet.ru
