Die erste öffentliche Veröffentlichung des Projekts Multikernel Linux (mklinux-v7.0-mk2) wird vorgestellt, das eine Version des Linux-Kernels entwickelt, die die Ausführung mehrerer unabhängiger Kerninstanzen auf einem physischen Computer ohne Einsatz eines Hypervisors und Virtualisierung ermöglicht. Jede Kernelinstanz hat direkten Zugriff auf die Hardware-Ressourcen und kann zur Ausführung separater isolierter Systemumgebungen verwendet werden. Die erste Veröffentlichung basiert auf dem Kernel Linux 7.0 und enthält die Build-Option „CONFIG_MULTIKERNEL“, deren Deaktivierung das Kernel vollständig identisch mit dem Standardkernel 7.0 macht. Derzeit wird nur die CPU-Architektur x86_64 unterstützt.
Multikernel wird als neuer Isolationsmechanismus präsentiert, der im Bereich zwischen Virtualisierung mit Hypervisor und containerbasierter Isolierung auf Basis eines gemeinsamen Kernels angesiedelt ist. Im Gegensatz zur Virtualisierung erfordert Multikernel keinen Einsatz eines Hypervisors, erleichtert die Schaffung von Umgebungen für die isolierte Ausführung einzelner Anwendungen und ermöglicht hohe Leistung ohne die Overheadkosten von Virtualisierung. Im Gegensatz zu Containern bietet Multikernel ein hohes Maß an Isolation und ermöglicht die Verwendung eines separaten Kernels in jeder isolierten Umgebung, wobei ein Absturz oder das Ausnutzen einer Sicherheitsanfälligkeit in einer Umgebung andere Umgebungen nicht beeinträchtigt.

Der Host-Kernel sorgt für die Verteilung der verfügbaren CPU, des Speichers und der PCI-Geräte zwischen parallel laufenden zusätzlichen Kernelinstanzen. Jede Instanz läuft auf einem separaten dedizierten CPU-Kernel, arbeitet mit den ihr zugewiesenen Geräten und hat Zugriff auf einen reservierten Bereich des physischen Speichers. Die gleichzeitige Ausführung mehrerer Kerne erfolgt ohne Virtualisierung unter Verwendung eines SMP-Handlers, der den Zugriff auf die verfügbaren CPUs verteilt. Es wird eine dynamische Ressourcenzuteilung für die gestarteten Umgebungen unterstützt und eine vorhersehbare Leistung gewährleistet.
Durch den Ausschluss der typischen Overhead-Kosten der Virtualisierung wird die Leistung bei der Verwendung von Multikernel als nahezu gleichwertig mit der Leistung auf dedizierter Hardware eingeschätzt. Bei der Verwendung von Multikernel entfällt die Phase der Steuerübertragung zwischen den virtuellen Maschinen (VM exit), es werden keine Seiten des zweiten Speichers verwendet, separate Gerätemodelle und die IOMMU-Übersetzung kommen nicht zum Einsatz. Im Vergleich zu Hypervisoren KVM zeigt die Verwendung von Multikernel eine Leistungssteigerung verschiedener Systemaufrufe und Funktionen zwischen 1,07 und 2,5-fach (fork + exit — 1,07x, write() — 1,39x, AF_UNIX — 1,55x, Pipe — 2,18x, Kontextwechsel — 2,50x), die Bandbreite und Latenzen bei der Arbeit mit Speicher liegen auf demselben Niveau.

Quelle: opennet.ru
