Chińska firma ByteDance, rozwijająca serwis TikTok, opublikowała w liście do programistów jądra Linux łatki z wdrożeniem systemu Parker (PARtitioned KERnel), który pozwala na jednoczesne uruchamianie kilku jąder Linux na jednym komputerze bez zastosowania tradycyjnej wirtualizacji. W kontekście rozwiązywanych zadań Parker przypomina zaprezentowany kilka dni temu projekt Multikernel, ale różni się od niego architekturą i implementacją.
W Parker zastosowano sekcjonowanie istniejących rdzeni CPU, pamięci i urządzeń. Każdy uruchomiony egzemplarz jądra oparty jest na jednym wspólnym obrazie jądra, ale może korzystać z różnych ustawień i optymalizacji. Pierwsze załadowane jądro (Boot Kernel) odpowiada za przydzielanie i sekcjonowanie urządzeń sprzętowych. Pozostałe egzemplarze jądra Linux (Application Kernel) pracują wyłącznie z przypisanymi do nich rdzeniami CPU, pamięcią oraz urządzeniami wejścia/wyjścia.
W początkowej wersji, aby zredukować koszty i uprościć realizację, brak jest mechanizmu zarządzającego, a wszystkie jądra korzystają z jednej strefy izolacji (domain), co oznacza, że błąd w dowolnym egzemplarzu jądra może prowadzić do problemów w całym systemie. W przyszłości planuje się wykorzystanie odrębnych możliwości sprzętowych do izolacji egzemplarzy jądra. Parker jest wspomniany jako obszar zastosowania dla komputerów z dużą liczbą rdzeni CPU, gdzie przy skalowaniu zadań pojawiają się problemy.
Do zarządzania w Parker wdrożono interfejs oparty na kernfs, a do ładowania dodatkowych egzemplarzy jądra w zarezerwowane obszary pamięci stosowany jest kexec. Przed uruchomieniem dodatkowych rdzeni, podstawowe jądro zwalnia rdzenie CPU, rezerwuje fizyczną pamięć i oddziela urządzenia PCI do ich użycia w sekcjonowanym jądrze. Dla wejścia/wyjścia każde jądro powinno mieć przypisane swoje urządzenie PCIe, takie jak dysk NVMe lub karta sieciowa. Po uruchomieniu egzemplarza jądra, nie może ono wchodzić w interakcje z innymi rdzeniami.
Źródło: opennet.ru
