Compania chineză ByteDance, care dezvoltă serviciul TikTok, a publicat în lista de discuții pentru dezvoltatori a nucleului Linux patch-uri pentru implementarea sistemului Parker (PARtitioned KERnel), care permite rularea simultană a mai multor nuclee Linux pe un singur computer, fără a utiliza virtualizarea tradițională. În ceea ce privește sarcinile rezolvate, Parker este similar cu proiectul Multikernel prezentat cu câteva zile în urmă, dar se diferențiază prin arhitectură și implementare.
În Parker se aplică secționarea nucleelor CPU existente, a memoriei și a dispozitivelor. Fiecare instanță de nucleu rulată se bazează pe o imagine comună a nucleului, dar poate utiliza setări și optimizări diferite. Nucleul inițial încărcat (Boot Kernel) se ocupă de distribuirea și secționarea resurselor hardware. Celelalte instanțe de nucleu Linux (Application Kernel) lucrează doar cu nucleele CPU, memoria și dispozitivele de intrare/ieșire asociate.
În varianta inițială, pentru a reduce costurile suplimentare și a simplifica implementarea, nu există un mecanism de gestionare, iar toate nucleele folosesc o singură zonă de izolare (domain), ceea ce înseamnă că o eroare în orice instanță de nucleu poate duce la probleme în întreaga sistemă. În viitor, se plănuiește utilizarea unor capacități hardware separate pentru izolarea instanțelor de nucleu. Parker este menționat ca fiind aplicabil pentru computere cu un număr mare de nuclee CPU, unde apar probleme legate de scalarea sarcinilor.
Pentru gestionare, în Parker este implementat un interfață bazată pe kernfs, iar pentru încărcarea instanțelor suplimentare de nucleu în zonele de memorie rezervate se folosește kexec. Înainte de a porni nucleele suplimentare, nucleul principal eliberează nucleele CPU, rezervă memoria fizică și deconectează dispozitivele PCI pentru utilizarea lor în nucleul secționat. Fiecare nucleu trebuie să aibă asociat un dispozitiv PCIe, cum ar fi un SSD NVMe sau un adaptor de rețea, pentru intrare/ieșire. După pornirea instanței nucleului, aceasta nu poate interacționa cu alte nuclee.
Sursa: opennet.ro
