Multikernel, erinomainen apuohjelma useiden ytimien suorittamiseen ilman virtualisointia

Avainkohdat:
  • Moniydin-Linux mahdollistaa itsenäisten ytimien samanaikaisen suorittamisen paljaalla metallilla.
  • Linux 7.0 -ytimeen perustuva se käyttää CONFIG_MULTIKERNEL-ominaisuutta ja tukee tällä hetkellä x86_64-arkkitehtuuria.
  • Se poistaa virtualisoinnin (KVM-hypervisorit) aiheuttaman lisätyön ja mahdollistaa kontekstivaihdot 2,5 kertaa nopeammin.
  • Toisin kuin säilöt, instanssit eivät jaa ydintä, mikä estää vikoja tai haavoittuvuuksia vaikuttamasta koko palvelimeen.
  • Käytä Kerf-työkalua yhdessä Lazy CMA- ja DAXFS-moduulien kanssa resurssien dynaamiseen hallintaan ja Docker-levykuvien käynnistämiseen.

Moniytiminen Linux

Viime vuonna keskustelimme täällä blogissa ByteDancen (TikTokin luojan) ehdotuksesta Parker (PARTITIONED KERnel) -nimisestä apuohjelmasta. Kyseessä on kokeellinen teknologia , jonka avulla useita Linux-ytimiä voi ajaa samanaikaisesti. Ja nyt, hieman yli puolitoista vuotta myöhemmin, projektista on julkaistu uusi julkinen apuohjelma nimeltä "Multikernel Linux (mklinux-v7.0-mk2)".

Tämä kehitys esittelee Linux-ytimen erikoistuneen version, joka mahdollistaa useiden itsenäisten ytimen instanssien samanaikaisen suorittamisen yhdellä fyysisellä palvelimella. Toimimalla suoraan paljaalla metallilla tämä teknologia poistaa kokonaan hypervisorien tai virtualisointikerrosten tarpeen ja antaa jokaiselle instanssille suoran pääsyn varattuun muistiin, suorittimeen ja laitteisiin.

ByteDance-Parker-moniydin
Aiheeseen liittyvä artikkeli:
Parker: Uusi teknologia, joka mahdollistaa useiden Linux-ytimien suorittamisen ilman virtualisointia

Äskettäin julkaistuun Linux 7.0 -ytimeen perustuva projekti mahdollistaa tämän ominaisuuden käyttöönoton CONFIG_MULTIKERNEL-määritysparametrin kautta . Jos tämä asetus on poistettu käytöstä, tuloksena oleva ydin on täsmälleen sama ja toimii kuten tavallinen Linux 7.0. Tällä hetkellä tämä ensimmäinen versio (v7.0-mk2) tukee yksinomaan x86_64-arkkitehtuureja ja on suunniteltu kuromaan umpeen perinteisen virtualisoinnin ja konttieristyksen välistä suorituskyky- ja tietoturvakuilua.

Eristäminen ilman suoritusrangaistusta

Virtualisoinnin suurin ongelma on hypervisorien veloittama suorituskykyvero . Sitä vastoin Multikernel Linux poistaa virtuaalikoneen poistumissiirtymät , toisen tason muistin muuntamisen ja laitemallien aiheuttaman lisäkuormituksen.

Xeon Gold 5418Y -prosessoreilla (Sapphire Rapids) tehtyjen testien jälkeen julkaistujen suorituskykytietojen mukaan moniydinjärjestelmä osoittaa dramaattista suoritusnopeuden kasvua KVM-vierasjärjestelmiin verrattuna. Esimerkiksi prosessien välinen kontekstin vaihto on 2,5 kertaa nopeampaa, putken latenssi on lyhentynyt yli puolella (2,18x) ja perusjärjestelmäkutsujen, kuten luku- ja kirjoitustoimintojen, vasteaika paranee yli 25 %.

Verrattuna perinteisiin Docker-kontteihin, Multikernel tarjoaa paremman suojauksen , koska kontit jakavat saman isäntäytimen, joten ytimen tason haavoittuvuus, paniikki tai sisäinen lukitus vaikuttaa kaikkiin vuokralaisiin. Multikernel-ekosysteemissä jokaisella ympäristöllä on oma itsenäinen ytimensä ; eli jos yksi instanssi kärsii kriittisestä vikaantumisesta, muut jatkavat toimintaansa ennallaan, mikä takaa eristetyn ympäristön, joka sopii ihanteellisesti kaiken suorittamiseen web-palvelimista intensiivisiin tekoälykoulutustyökuormiin (koneoppiminen) samalla laitteistolla.

Dynaaminen määritys ja orkestrointi Kerf-työkalulla

Moniydin-Linux toimii isäntäytimellä , joka hallitsee suurta resurssipoolia (suorittimia, RAM-muistia ja PCI-laitteita). Hyödyntämällä olemassa olevaa laitepuurakennetta (saatavilla osoitteessa /sys/fs/multikernel/), ydin luopuu tästä poolista ja käynnistää "lapsiytimiä" natiivin kexec_file_load()-alijärjestelmän kautta. Linuxin hotplug-ominaisuuksien ansiosta näitä resursseja voidaan siirtää dynaamisesti instanssien välillä ilman palvelimen uudelleenkäynnistystä, mikä varmistaa ennustettavan ja reaaliaikaisesti säädettävän suorituskyvyn.

Tämän ekosysteemin organisoimiseksi kehittäjät ovat ottaneet käyttöön Kerf-komentorivityökalun . Tämä apuohjelma hallitsee instanssien koko elinkaarta tukeutuen täydentäviin avoimen lähdekoodin moduuleihin. Yksi näistä on Lazy CMA, joka varaa yhtenäistä fyysistä muistia ajonaikana ilman käynnistystä edeltävää konfigurointia.

Toinen pilari on DAXFS, moduuli, jonka avulla instanssit voivat jakaa tiedostojärjestelmiä suoraan muistissa; tämän ansiosta Kerf voi käynnistää lapsiytimen suoraan Docker-säilökuvan sisällä hyödyntäen sen tiedostojärjestelmää ilman emulointikerroksia ja käyttämällä muistin sisäisiä kuvaajia verkkoyhteyksiin ilman tietojen kopiointia.

On syytä mainita, että tämä ensimmäinen julkaisu on läpäissyt intensiiviset vakaustestit 5-tasoisilla sivutusarkkitehtuureilla ja aktiivisella KASLR:llä, mikä osoittaa resurssien palautuksen olevan täysin turvallista, vaikka lapsiydin kaatuisi.

Sallimalla järjestelmälukituksen (kuten suuren määrän samassa välimuistissa olevia linkityksen poisto- tai uudelleennimeämisprosesseja) aiheuttavien työkuormien jakamisen erillisiin ytimiin, jotka on linjattu fyysisten suoritinkantoihin, Multikernel Linux osoittaa kykynsä skaalautua yhden monoliittisen ytimen asettaman suorituskykyrajan yli, mikä avaa uuden aikakauden palvelimien konsolidoinnissa ja tehokkaassa pilvilaskennassa.

Lopuksi, jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.


Lisää ensisijaiseksi lähteeksi Googlessa