Została przedstawiona pierwsza publiczna wersja projektu Multikernel Linux (mklinux-v7.0-mk2), rozwijającego wariant jądra Linux, wzbogaconego o możliwość uruchamiania wielu niezależnych egzemplarzy jądra na jednym fizycznym komputerze bez użycia hipernadzorcy i wirtualizacji. Każdy egzemplarz jądra ma bezpośredni dostęp do zasobów sprzętowych i może być używany do uruchamiania odrębnych izolowanych środowisk systemowych. Pierwsza wersja oparta jest na jądrze Linux 7.0 i zawiera ustawienie kompilacji „CONFIG_MULTIKERNEL”, po jego wyłączeniu jądro staje się całkowicie analogiczne do standardowego jądra 7.0. Z architektur CPU na razie obsługiwany jest tylko x86_64.
Multikernel jest przedstawiany jako nowy mechanizm izolacji, zajmujący niszę pomiędzy wirtualizacją przy pomocy hipernadzorcy a izolacją kontenerową opartą na wspólnym jądrze. W przeciwieństwie do wirtualizacji, Multikernel nie wymaga użycia hipernadzorcy, co ułatwia tworzenie środowisk do izolowanego uruchamiania pojedynczych aplikacji i pozwala uzyskać wysoką wydajność bez obciążeń związanych z wirtualizacją. W odróżnieniu od kontenerów, Multikernel zapewnia wysoki poziom izolacji i pozwala na użycie oddzielnego jądra w każdym izolowanym środowisku, w przypadku awarii lub eksploatacji podatności, która nie wpływa na inne środowiska.

Jądro hosta zapewnia rozdzielenie dostępnych CPU, pamięci i urządzeń PCI pomiędzy równolegle działającymi dodatkowymi instancjami jądra. Każda instancja działa na oddzielnym przydzielonym jądrze CPU, pracuje z przypisanymi do niej urządzeniami i ma dostęp do wydzielonego obszaru pamięci fizycznej. Równoczesne wykonywanie wielu jąder odbywa się bez wirtualizacji, przy użyciu obsługującego SMP, który rozdziela dostępne CPU. Obsługiwane jest dynamiczne przydzielanie zasobów dla uruchamianych środowisk oraz zapewnienie przewidywalnej wydajności.
Dzięki wyeliminowaniu typowych dla wirtualizacji narzutów, wydajność korzystania z Multikernel ocenia się jako zbliżoną do wydajności działania na dedykowanym sprzęcie. W przypadku Multikernel nie ma etapu przekazywania kontroli między maszynami wirtualnymi (VM exit), nie są używane strony pamięci drugiego poziomu, oddzielny model urządzeń oraz translacja IOMMU. W porównaniu do hyperwizora KVM korzystając z Multikernel, odnotowano wzrost wydajności różnych wywołań systemowych i funkcji od 1,07 do 2,5 razy (fork + exit — 1,07x, write() — 1,39x, AF_UNIX — 1,55x, Pipe — 2,18x, przełączanie kontekstu — 2,50x), przepustowość i opóźnienia w pracy z pamięcią utrzymują się na tym samym poziomie.

Źródło: opennet.ru
