Het Chinese bedrijf ByteDance, dat de dienst TikTok ontwikkelt, heeft patches gepubliceerd in de mailinglijst van Linux-ontwikkelaars voor de implementatie van het Parker-systeem (PARtitioned KERnel), waarmee meerdere Linux-kernels gelijktijdig op één computer kunnen draaien zonder traditionele virtualisatie. Wat betreft de op te lossen problemen lijkt Parker op het enkele dagen geleden geïntroduceerde project Multikernel, maar het verschilt van dat project in architectuur en implementatie.
In Parker wordt gebruikgemaakt van partitionering van bestaande CPU-kernels, geheugen en apparaten. Elke opgestarte kern-exemplaar is gebaseerd op één gemeenschappelijk kernbeeld, maar kan verschillende instellingen en optimalisaties gebruiken. De eerste opstartkern (Boot Kernel) zorgt voor de verdeling en partitionering van hardware-apparaten. De andere exemplaren van de Linux-kernel (Application Kernel) werken alleen met hun toegewezen CPU-kernels, geheugen en invoer-/uitvoerapparaten.
In de initiële versie ontbreken om de overhead te verlagen en de implementatie te vereenvoudigen, de beheersmechanismen en gebruiken alle kernels één isolatiegebied (domain), dat wil zeggen dat een fout in welk kern-exemplaar dan ook problemen kan veroorzaken in het gehele systeem. In de toekomst is het de bedoeling om aparte hardwarecapaciteiten voor de isolatie van kern-exemplaren in te zetten. Parker wordt genoemd als toepassing voor computers met een groot aantal CPU-kernels, waarbij schaalbaarheidsproblemen bij het uitvoeren van taken zich voordoen.
Voor het beheer is in Parker een interface op basis van kernfs geïmplementeerd, en voor het opstarten van aanvullende kern-exemplaren in de gereserveerde geheugengebieden wordt kexec gebruikt. Voor het starten van aanvullende kernels maakt de primaire kernel de CPU-kernels vrij, reserveert het fysieke geheugen en ontkoppelt het PCI-apparaten voor gebruik in de gepartitioneerde kernel. Voor invoer-/uitvoer moet elk kern zijn eigen PCIe-apparaat hebben, zoals een NVMe-opslag of netwerkadapter. Na het starten van een kern-exemplaar kan het niet meer communiceren met andere kernels.
Bron: opennet.ru
