Eelmisel aastal arutasime siin blogis ByteDance'i (TikToki looja) ettepanekut utiliidi nimega Parker (PARTITIONED KERnel) kohta, mis on eksperimentaalne tehnoloogia , mis võimaldab mitmel Linuxi kernelil samaaegselt töötada. Ja nüüd, veidi üle pooleteise aasta hiljem, on projektist välja antud uus avalik utiliit "Multikernel Linux (mklinux-v7.0-mk2)".
See arendus tutvustab Linuxi kerneli spetsiaalset varianti, mis võimaldab mitme sõltumatu kerneli eksemplari samaaegset käivitamist ühes füüsilises serveris. Töötades otse paljal metallil, välistab see tehnoloogia täielikult hüperviisorite või virtualiseerimiskihtide vajaduse, andes igale eksemplarile otsese juurdepääsu eraldatud mälule, protsessorile ja seadmetele.
Hiljuti avaldatud Linux 7.0 kerneli põhjal võimaldab projekt selle funktsiooni lubada konfiguratsiooniparameetri CONFIG_MULTIKERNEL kaudu . Kui see valik on keelatud, on tulemuseks olev kernel täpselt sama ja käitub nagu tavaline Linux 7.0. Praegu toetab see esimene versioon (v7.0-mk2) ainult x86_64 arhitektuure ja on loodud selleks, et ületada jõudluse ja turvalisuse lõhe traditsioonilise virtualiseerimise ja konteinerite isolatsiooni vahel.
Isolatsioon ilma soorituskaristuseta
Virtualiseerimise suurim probleem on hüperviisorite poolt võetav jõudlusmaks . Seevastu Multikernel Linux välistab virtuaalmasina väljumisüleminekud , teise taseme mälu teisendamise ja seadmemudelite tekitatud lisakoormuse.
Xeon Gold 5418Y protsessoritel (Sapphire Rapids) testimise järel avaldatud jõudlusandmete kohaselt näitab mitmetuumaline süsteem KVM-külalissüsteemidega võrreldes dramaatilist täitmiskiiruse kasvu. Näiteks on kontekstivahetus protsesside vahel 2,5 korda kiirem, toru latentsus väheneb enam kui poole võrra (2,18x) ja baassüsteemikõned, näiteks lugemis- ja kirjutamisoperatsioonid, lühendavad reageerimisaega enam kui 25%.
Võrreldes traditsiooniliste Dockeri konteineritega pakub Multikernel paremat kaitset, sest kuna konteinerid jagavad sama hostkerneli, mõjutab kerneli tasemel haavatavus, paanika või sisemise lukustuse küllastumine kõiki rentnikke. Multikerneli ökosüsteemis on igal keskkonnal oma sõltumatu kernel ; see tähendab, et kui ühes eksemplaris tekib kriitiline tõrge, jätkavad teised tööd puutumata, tagades isoleeritud keskkonna, mis sobib ideaalselt kõige käitamiseks alates veebiserveritest kuni intensiivsete tehisintellekti koolituskoormusteni (masinõpe) samal riistvaral.
Dünaamiline määramine ja orkestreerimine lõikega
Mitmetuumaline Linux töötab hostkerneli abil , mis haldab suurt hulka ressursse (protsessorid, muutmälu ja PCI-seadmed). Kasutades olemasolevat seadmete puustruktuuri (ligipääsetav aadressil /sys/fs/multikernel/), jagab kernel selle ressursside hulgast välja ja käivitab natiivse kexec_file_load() alamsüsteemi kaudu "lapsetuumad". Linuxi hotplug-võimaluste abil saab neid ressursse dünaamiliselt eksemplaride vahel liigutada ilma serveri taaskäivitamist nõudmata, tagades prognoositava ja reaalajas reguleeritava jõudluse.
Selle ökosüsteemi korraldamiseks on arendajad kasutusele võtnud käsurea tööriista Kerf . See utiliit haldab kogu eksemplaride elutsüklit, tuginedes täiendavatele avatud lähtekoodiga moodulitele. Üks neist on Lazy CMA, mis eraldab käitusajal pidevat füüsilist mälu ilma igasuguse käivitamiseelse konfiguratsioonita.
Teine sammas on DAXFS, moodul, mis võimaldab eksemplaridel failisüsteeme otse mälus jagada; tänu sellele saab Kerf käivitada lapsekerneli otse Dockeri konteineri kujutise sees, kasutades ära selle failisüsteemi ilma emuleerimiskihtide vajaduseta ja kasutades mälusiseseid deskriptoreid võrgu ühendamiseks ilma andmete kopeerimiseta.
Väärib märkimist, et see esimene väljalase on läbinud intensiivsed stabiilsustestid 5-tasemelise lehendusarhitektuuri ja aktiivse KASLR-i all, mis näitab, et ressursside taastamine on täiesti ohutu isegi lapsetuuma krahhi korral.
Lubades süsteemilukkude (näiteks suure hulga samas vahemälus olevate lahtiühendamise või ümbernimetamise protsesside) tõttu kokku põrganud töökoormusi jagada füüsiliste protsessori pesadega joondatud eraldi kernelide vahel, demonstreerib Multikernel Linux võimet skaleerida üle ühe monoliitse kerneli kehtestatud jõudlusbarjääri, avades uue ajastu serverite konsolideerimises ja suure jõudlusega pilvandmetöötluses.
Lõpuks, kui olete huvitatud lisateabest, leiate üksikasjad järgmiselt lingilt.