Das chinesische Unternehmen ByteDance, das den Dienst TikTok entwickelt, hat in der Entwickler-Newsletter-Liste Patches fĂŒr den Linux-Kernel veröffentlicht, die das Parker-System (PARtitioned KERnel) implementieren. Dieses ermöglicht es, mehrere Linux-Kernel gleichzeitig auf einem Computer ohne traditionelle Virtualisierung zu betreiben. In Bezug auf die zu lösenden Aufgaben Ă€hnelt Parker dem vor einigen Tagen vorgestellten Multikernel-Projekt, unterscheidet sich jedoch in Architektur und Implementierung.
In Parker wird eine Partitionierung der vorhandenen CPU-Kerne, des Speichers und der GerĂ€te angewendet. Jede gestartete Instanz des Kernels basiert auf einem gemeinsamen Kernel-Image, kann jedoch unterschiedliche Einstellungen und Optimierungen nutzen. Der erste geladene Kernel (Boot Kernel) ĂŒbernimmt die Verteilung und Partitionierung der Hardware-Ressourcen. Die ĂŒbrigen Instanzen des Linux-Kernels (Application Kernel) arbeiten nur mit den ihnen zugewiesenen CPU-Kernen, dem Speicher und den Ein-/AusgabegerĂ€ten.
In der ursprĂŒnglichen Version fehlt ein Steuermechanismus zur Reduzierung von Overhead und zur Vereinfachung der Implementierung, sodass alle Kerne denselben Isolationsbereich (Domain) verwenden. Das bedeutet, dass ein Fehler in einer beliebigen Kernel-Instanz Probleme im gesamten System verursachen kann. In Zukunft plant man, separate Hardware-Möglichkeiten zur Isolierung der Kernel-Instanzen zu nutzen. Als Anwendungsbereich fĂŒr Parker werden Computer mit einer hohen Anzahl an CPU-Kernen erwĂ€hnt, bei denen es Probleme beim Skalieren von Aufgaben gibt.
FĂŒr das Management in Parker wurde eine Schnittstelle auf Basis von kernfs implementiert, und zum Laden zusĂ€tzlicher Kernel-Instanzen in reservierte Speicherbereiche wird kexec verwendet. Vor dem Starten zusĂ€tzlicher Kerne gibt der primĂ€re Kernel die CPU-Kerne frei, reserviert physischen Speicher und trennt PCI-GerĂ€te zur Verwendung im partitionierten Kernel. Jedes Kernel muss mit einem eigenen PCIe-GerĂ€t verbunden sein, wie einem NVMe-Speicher oder einem Netzwerkadapter. Nach dem Start einer Kernel-Instanz kann diese nicht mit anderen Kernen interagieren.
Quelle: opennet.ru
