Daugiabranduolė programa – puiki programa, skirta paleisti kelis branduolius be virtualizacijos

Pagrindiniai klausimai:
  • Daugiabranduolė „Linux“ leidžia vienu metu paleisti nepriklausomus branduolius ant gryno metalo.
  • Remiantis „Linux 7.0“ branduoliu, jis naudoja CONFIG_MULTIKERNEL ir šiuo metu palaiko x86_64 architektūrą.
  • Tai pašalina virtualizacijos (KVM hipervizorių) pridėtines išlaidas ir leidžia 2,5 karto greičiau perjungti kontekstą.
  • Skirtingai nuo konteinerių, egzemplioriai nebendrina branduolio, todėl gedimai ar pažeidžiamumai nepaveikia viso serverio.
  • Naudokite „Kerf“ įrankį kartu su „Lazy CMA“ ir „DAXFS“ moduliais, kad dinamiškai valdytumėte išteklius ir paleistumėte „Docker“ atvaizdus.

Daugiabranduolė Linux

Praėjusiais metais šiame tinklaraštyje aptarėme „ByteDance“ („TikTok“ kūrėjo) pasiūlymą sukurti programą pavadinimu „Parker“ („PARTItioned KERnel“) – eksperimentinę technologiją , leidžiančią vienu metu veikti keliems „Linux“ branduoliams. O dabar, praėjus kiek daugiau nei pusantrų metų, išleista nauja vieša projekto programa „Multikernel Linux (mklinux-v7.0-mk2)“.

Šis patobulinimas pristato specializuotą „Linux“ branduolio variantą, kuris leidžia vienu metu vykdyti kelis nepriklausomus branduolio egzempliorius viename fiziniame serveryje. Veikdama tiesiogiai ant gryno metalo, ši technologija visiškai panaikina hipervizorių ar virtualizacijos sluoksnių poreikį, suteikdama kiekvienam egzemplioriui tiesioginę prieigą prie paskirstytos atminties, procesoriaus ir įrenginių.

„ByteDance-Parker“ daugiabranduolė sistema
Susijęs straipsnis:
Parker: nauja technologija, leidžianti paleisti kelis „Linux“ branduolius be virtualizacijos

Remiantis neseniai išleistu „Linux 7.0“ branduoliu, projektas leidžia įjungti šią funkciją naudojant konfigūracijos parametrą CONFIG_MULTIKERNEL . Jei ši parinktis išjungta, gautas branduolys yra visiškai toks pat ir veikia kaip standartinė „Linux 7.0“. Šiuo metu ši pirmoji versija (v7.0-mk2) palaiko tik x86_64 architektūras ir yra sukurta siekiant panaikinti našumo ir saugumo atotrūkį tarp tradicinės virtualizacijos ir konteinerių izoliacijos.

Izoliacija be veiklos nuobaudų

Didžiausia virtualizacijos problema yra hipervizorių imamas našumo „mokestis“. Priešingai, daugiabranduolė „Linux“ panaikina virtualios mašinos išėjimo perėjimus , antro lygio atminties vertimą ir įrenginių modelių generuojamas pridėtines išlaidas.

Remiantis našumo duomenimis, paskelbtais po bandymų su „Xeon Gold 5418Y“ procesoriais („Sapphire Rapids“), daugiabranduolė sistema demonstruoja dramatišką vykdymo greičio padidėjimą, palyginti su KVM svečiais. Pavyzdžiui, konteksto perjungimas tarp procesų yra 2,5 karto greitesnis, kanalo delsa sumažėja daugiau nei perpus (2,18 karto), o bazinių sistemos iškvietimų, tokių kaip skaitymo ir rašymo operacijos, atsako laikas sutrumpėja daugiau nei 25 %.

Palyginti su tradiciniais „Docker“ konteineriais, „Multikernel“ siūlo geresnę apsaugą , nes konteineriai naudoja tą patį pagrindinį branduolį, todėl branduolio lygio pažeidžiamumas, panika ar vidinis užrakto prisotinimas paveikia visus nuomininkus. „Multikernel“ ekosistemoje kiekviena aplinka turi savo nepriklausomą branduolį ; tai yra, jei vienas egzempliorius patiria kritinį gedimą, kiti toliau veikia nepaveikti, taip užtikrinant izoliuotą aplinką, idealiai tinkančią viskam – nuo ​​žiniatinklio serverių iki intensyvių dirbtinio intelekto mokymo darbo krūvių (mašininio mokymosi) – vykdyti toje pačioje aparatinėje įrangoje.

Dinaminis priskyrimas ir orkestravimas naudojant „Kerf“

Daugiabranduolė „Linux“ veikia naudodama pagrindinį branduolį , kuris valdo didelį išteklių telkinį (procesorius, RAM ir PCI įrenginius). Naudodamas esamą įrenginių medžio struktūrą (pasiekiamą adresu /sys/fs/multikernel/), branduolys išskaido šį telkinį ir paleidžia „vaikinius branduolius“ per vidinę „kexec_file_load()“ posistemę. Dėl „Linux“ karštojo prijungimo galimybių šiuos išteklius galima dinamiškai perkelti tarp egzempliorių nereikalaujant perkrauti serverio, užtikrinant nuspėjamą ir realiuoju laiku reguliuojamą našumą.

Siekdami suvaldyti šią ekosistemą, kūrėjai pristatė komandinės eilutės įrankį „Kerf“ . Šis įrankis valdo visą egzempliorių gyvavimo ciklą, remdamasis papildomais atvirojo kodo moduliais. Vienas iš jų yra „Lazy CMA“, kuris vykdymo metu paskirsto vientisą fizinę atmintį nereikalaudamas jokios konfigūracijos prieš paleidimą.

Kitas ramstis yra DAXFS – modulis, leidžiantis egzemplioriams tiesiogiai bendrinti failų sistemas atmintyje; dėl to „Kerf“ gali paleisti antrinį branduolį tiesiai iš „Docker“ konteinerio atvaizdo, pasinaudodama savo failų sistema be emuliacijos sluoksnių ir naudodama atminties deskriptorius tinklo sujungimui be duomenų kopijavimo.

Verta paminėti, kad ši pirmoji versija praėjo intensyvius stabilumo testus naudojant 5 lygių puslapiavimo architektūras ir aktyvų KASLR, o tai parodė, kad išteklių atkūrimas yra visiškai saugus net ir tada, kai sugenda antrinis branduolys.

Leidžiant paskirstyti darbo krūvius, kurie susidūrė dėl sistemos užrakinimų (pvz., daugybės atsiejimo ar pervadinimo procesų toje pačioje talpykloje), atskiriems branduoliams, suderintiems su fiziniais procesoriaus lizdais, „Multikernel Linux“ demonstruoja gebėjimą išplėsti našumo ribas, kurias nustato vienas monolitinis branduolys, ir atveria naują serverių konsolidavimo ir didelio našumo debesų kompiuterijos erą.

Galiausiai, jei norite sužinoti daugiau, išsamią informaciją galite rasti šioje nuorodoje.


Pridėti kaip pageidaujamą šaltinį „Google“ sistemoje