W celu omówienia, deweloperzy jądra Linux zaproponowali serię łatek opracowanych w ramach projektu Multikernel, który niedawno został zaklasyfikowany jako oprogramowanie open source i teraz będzie rozwijany wspólnie ze społecznością. Multikernel pozwala na uruchamianie wielu niezależnych instancji jądra Linux na jednym fizycznym komputerze, które mają bezpośredni dostęp do zasobów sprzętowych i mogą być używane do uruchamiania kilku izolowanych środowisk systemowych. Projekt został stworzony przez firmę Multikernel Technologies, założoną i kierowaną przez Conga Wanga, który nadzoruje w jądrze Linux subsystem zarządzania ruchem (TC, Traffic Control).
Do uruchamiania i zarządzania jądrem zaproponowano ulepszony wywołanie kexec, który w przeciwieństwie do klasycznego kexec nie ogranicza się do zastępowania działającego jądra, ale pozwala na uruchamianie dodatkowych instancji jądra działających równolegle. W celu monitorowania i debugowania uruchomionych instancji jądra wprowadzono interfejs '/proc/multikernel', a do komunikacji między jądrem i koordynacji pracy zaproponowano framework komunikacyjny Multikernel IPI.

Multikernel przedstawiany jest jako nowa architektura izolacji, zajmująca miejsce pomiędzy wirtualizacją z użyciem hipernadzorcy a izolacją kontenerową opartą na wspólnym jądrze. W przeciwieństwie do wirtualizacji, Multikernel nie wymaga użycia hipernadzorcy, upraszcza tworzenie środowisk do izolowanego uruchamiania poszczególnych aplikacji oraz pozwala osiągnąć wysoką wydajność bez narzutów związanych z wirtualizacją. W przeciwieństwie do kontenerów, Multikernel zapewnia wysoki poziom izolacji i umożliwia korzystanie z oddzielnego jądra w każdym izolowanym środowisku.

Wydajność przy użyciu Multikernel oceniana jest jako zbliżona do wydajności działania na oddzielnym sprzęcie. Osiągnięto to dzięki wyeliminowaniu narzutów związanych z wirtualizacją, które powstają w wyniku przełączania między maszynami wirtualnymi (VM exit), translacji IOMMU oraz interwencji hipernadzorcy przy wykonywaniu operacji uprzywilejowanych. Wspierane jest dynamiczne przydzielanie zasobów uruchamianym środowiskom oraz zapewnienie przewidywalnej wydajności.
Jednoczesne uruchamianie wielu jąder odbywa się bez wirtualizacji, przy użyciu procesora SMP, który rozdziela dostępne CPU między instancjami jąder Linux. Każda instancja jądra Linux jest przypisana do jednego lub kilku rdzeni CPU, dedykowanych do jej uruchamiania, przy wspólnym korzystaniu z pozostałych zasobów sprzętowych.
Główne zalety Multikernel:
- Poprawiona izolacja od awarii w działających środowiskach.
- Zwiększone bezpieczeństwo dzięki podziałowi na poziomie jądra.
- Bardziej efektywne wykorzystanie zasobów w porównaniu do tradycyjnych maszyn wirtualnych opartych na hypervisorach, takich jak KVM i Xen.
- Potencjalna możliwość aktualizacji jądra bez przerywania działania przy użyciu mechanizmu KHO (Kernel Hand Over).
- Wsparcie integracji z standardowymi infrastrukturami chmurowymi oraz możliwość płynnego przejścia z tradycyjnych systemów wirtualizacji i izolacji kontenerowej.
- Pełna zgodność z istniejącymi aplikacjami i interfejsami systemowymi Linux. Multikernel jedynie punktowo zmienia jądro, zachowując pełną zgodność na poziomie API.
Źródło: opennet.ru
