Multikernel, doskonałe narzędzie do uruchamiania wielu jąder bez wirtualizacji

Kluczowe punkty:
  • Multikernel Linux pozwala na równoczesne uruchamianie niezależnych jąder na gołym komputerze.
  • Bazuje na jądrze Linux 7.0, wykorzystuje CONFIG_MULTIKERNEL i obecnie obsługuje architekturę x86_64.
  • Eliminuje obciążenie związane z wirtualizacją (hiperwizory KVM), umożliwiając przełączanie kontekstów 2,5-krotnie szybciej.
  • W przeciwieństwie do kontenerów instancje nie współdzielą jądra, co zapobiega awariom lub zagrożeniom, które mogą mieć wpływ na cały serwer.
  • Użyj narzędzia Kerf wraz z modułami Lazy CMA i DAXFS, aby dynamicznie zarządzać zasobami i uruchamiać obrazy Docker.

Linux wielojądrowy

W zeszłym roku omawialiśmy na blogu propozycję ByteDance (twórcy TikToka) dotyczącą narzędzia o nazwie Parker (PARTitioned KERnel), eksperymentalnej technologii umożliwiającej jednoczesne uruchamianie wielu jąder Linuksa. Teraz, nieco ponad półtora roku później, ukazało się nowe, publiczne narzędzie z projektu, „Multikernel Linux (mklinux-v7.0-mk2)”.

To rozwiązanie wprowadza wyspecjalizowaną odmianę jądra Linux, która umożliwia jednoczesne uruchamianie wielu niezależnych instancji jądra na jednym serwerze fizycznym. Działając bezpośrednio na serwerze fizycznym, technologia ta całkowicie eliminuje potrzebę stosowania hiperwizorów lub warstw wirtualizacji, zapewniając każdej instancji bezpośredni dostęp do przydzielonej pamięci, procesora i urządzeń.

ByteDance-Parker-multikernel
Podobne artykuł:
Parker: Nowa technologia umożliwiająca uruchamianie wielu jąder Linuksa bez wirtualizacji

Oparty na niedawno wydanym jądrze Linuksa 7.0, projekt umożliwia włączenie tej funkcji za pomocą parametru konfiguracyjnego CONFIG_MULTIKERNEL . Po wyłączeniu tej opcji, jądro jest dokładnie takie samo i zachowuje się jak standardowy Linux 7.0. Obecnie ta pierwsza wersja (v7.0-mk2) obsługuje wyłącznie architektury x86_64 i została zaprojektowana w celu zniwelowania luki w wydajności i bezpieczeństwie między tradycyjną wirtualizacją a izolacją kontenerów.

Izolacja bez utraty wydajności

Największym problemem wirtualizacji jest „podatek” wydajnościowy naliczany przez hiperwizory. W przeciwieństwie do tego, Multikernel Linux eliminuje przejścia wyjściowe maszyn wirtualnych , translację pamięci drugiego poziomu oraz obciążenie generowane przez modele urządzeń.

Według danych wydajnościowych opublikowanych po testach na procesorach Xeon Gold 5418Y (Sapphire Rapids), system wielojądrowy charakteryzuje się znacznym wzrostem szybkości wykonywania w porównaniu z gośćmi KVM. Na przykład, przełączanie kontekstu między procesami jest 2,5 razy szybsze, opóźnienie potoku jest zmniejszone o ponad połowę (2,18x), a podstawowe wywołania systemowe, takie jak operacje odczytu i zapisu, zyskują ponad 25% czasu reakcji.

W porównaniu z tradycyjnymi kontenerami Dockera, Multikernel oferuje lepszą ochronę , ponieważ kontenery korzystają z tego samego jądra hosta, co oznacza, że ​​podatność na ataki, panika lub nasycenie blokad wewnętrznych na poziomie jądra dotyczy wszystkich użytkowników. W ekosystemie Multikernel każde środowisko ma własne, niezależne jądro ; oznacza to, że jeśli jedna instancja dozna krytycznej awarii, pozostałe kontynuują działanie bez zakłóceń, gwarantując odizolowane środowisko idealne do obsługi wszystkiego, od serwerów WWW po intensywne obciążenia związane ze szkoleniem AI (uczenie maszynowe), na tym samym sprzęcie.

Dynamiczne przypisywanie i orkiestracja z Kerf

Multikernel Linux działa w oparciu o jądro hosta , które zarządza dużą pulą zasobów (procesorów, pamięci RAM i urządzeń PCI). Wykorzystując istniejącą strukturę drzewa urządzeń (dostępną w katalogu /sys/fs/multikernel/), jądro tworzy tę pulę i uruchamia „jądra potomne” za pośrednictwem natywnego podsystemu kexec_file_load(). Dzięki możliwościom hotplug Linuksa, zasoby te można dynamicznie przenosić między instancjami bez konieczności restartu serwera, co zapewnia przewidywalną i regulowaną w czasie rzeczywistym wydajność.

Aby zorganizować ten ekosystem, twórcy wprowadzili narzędzie wiersza poleceń Kerf . Narzędzie to zarządza całym cyklem życia instancji, opierając się na uzupełniających się modułach open source. Jednym z nich jest Lazy CMA, który przydziela ciągłą pamięć fizyczną w czasie wykonywania, bez konieczności konfiguracji przed uruchomieniem.

Drugim filarem jest DAXFS, moduł umożliwiający instancjom współdzielenie systemów plików bezpośrednio w pamięci; dzięki temu Kerf może uruchomić jądro potomne bezpośrednio w obrazie kontenera Docker, korzystając z jego systemu plików bez konieczności stosowania warstw emulacji i stosując deskryptory w pamięci do połączeń sieciowych bez kopiowania danych.

Warto wspomnieć, że ta pierwsza wersja przeszła intensywne testy stabilności przy architekturach stronicowania 5-poziomowego i aktywnym KASLR, co dowodzi, że odzyskiwanie zasobów jest całkowicie bezpieczne nawet w przypadku awarii jądra potomnego.

Umożliwiając podział obciążeń, które kolidowały z powodu blokad systemu (takich jak duża liczba procesów rozłączania lub zmiany nazw w tej samej pamięci podręcznej) na osobne jądra dostosowane do fizycznych gniazd procesora, Multikernel Linux wykazuje zdolność do skalowania poza barierą wydajności narzucaną przez pojedyncze monolityczne jądro, otwierając nową erę w konsolidacji serwerów i wydajnych obliczeniach w chmurze.

Jeśli chcesz dowiedzieć się więcej, szczegóły znajdziesz pod poniższym linkiem.


Dodaj jako preferowane źródło w Google