Pagājušajā gadā mēs šeit emuārā apspriedām ByteDance (TikTok veidotāja) priekšlikumu utilītai ar nosaukumu Parker (PARTItioned KERnel) — eksperimentālai tehnoloģijai , kas ļauj vienlaikus darboties vairākiem Linux kodoliem. Un tagad, nedaudz vairāk kā pusotru gadu vēlāk, ir izlaista jauna publiska utilīta no projekta "Multikernel Linux (mklinux-v7.0-mk2)".
Šī izstrāde ievieš specializētu Linux kodola variantu, kas ļauj vienlaikus izpildīt vairākus neatkarīgus kodola eksemplārus vienā fiziskā serverī. Darbojoties tieši uz tukša metāla, šī tehnoloģija pilnībā novērš nepieciešamību pēc hipervizoriem vai virtualizācijas slāņiem, piešķirot katram eksemplāram tiešu piekļuvi piešķirtajai atmiņai, centrālajam procesoram un ierīcēm.
Balstoties uz nesen izlaisto Linux 7.0 kodolu, projekts ļauj iespējot šo funkciju, izmantojot konfigurācijas parametru CONFIG_MULTIKERNEL . Ja šī opcija ir atspējota, iegūtais kodols ir tieši tāds pats un darbojas kā standarta Linux 7.0. Pašlaik šī pirmā versija (v7.0-mk2) atbalsta tikai x86_64 arhitektūras un ir izstrādāta, lai pārvarētu veiktspējas un drošības plaisu starp tradicionālo virtualizāciju un konteineru izolāciju.
Izolācija bez snieguma soda
Lielākā virtualizācijas problēma ir hipervizoru iekasētais veiktspējas "nodoklis". Turpretī daudzkodolu Linux novērš virtuālās mašīnas izejas pārejas , otrā līmeņa atmiņas tulkošanu un ierīču modeļu radīto papildu slodzi.
Saskaņā ar veiktspējas datiem, kas publicēti pēc testēšanas ar Xeon Gold 5418Y procesoriem (Sapphire Rapids), daudzkodolu sistēma demonstrē ievērojamu izpildes ātruma pieaugumu salīdzinājumā ar KVM viesiem. Piemēram, konteksta pārslēgšana starp procesiem ir 2,5 reizes ātrāka, kanāla latentums ir samazināts vairāk nekā uz pusi (2,18x), un pamata sistēmas izsaukumi, piemēram, lasīšanas un rakstīšanas operācijas, reakcijas laikā iegūst vairāk nekā 25%.
Salīdzinot ar tradicionālajiem Docker konteineriem, Multikernel piedāvā labāku aizsardzību, jo, tā kā konteineriem ir viens un tas pats resursdatora kodols, kodola līmeņa ievainojamība, panika vai iekšēja bloķēšanās piesātinājums ietekmē visus nomniekus. Multikernel ekosistēmā katrai videi ir savs neatkarīgs kodols ; tas ir, ja vienā instancē rodas kritiska kļūme, pārējās turpina darboties neietekmētas, garantējot izolētu vidi, kas ir ideāli piemērota visu darbību veikšanai, sākot no tīmekļa serveriem līdz intensīvām mākslīgā intelekta apmācības darba slodzēm (mašīnmācīšanās) uz vienas aparatūras.
Dinamiska piešķiršana un orķestrēšana ar Kerf
Daudzkodolu Linux darbojas, izmantojot resursdatora kodolu , kas pārvalda lielu resursu kopu (centrālos procesorus, operatīvo atmiņu un PCI ierīces). Izmantojot esošo ierīču koka struktūru (pieejama vietnē /sys/fs/multikernel/), kodols sadala šo kopu un palaiž "bērnu kodolus", izmantojot vietējo kexec_file_load() apakšsistēmu. Pateicoties Linux karstās pieslēgšanas iespējām, šos resursus var dinamiski pārvietot starp instancēm, neprasot servera pārstartēšanu, nodrošinot paredzamu un reāllaikā regulējamu veiktspēju.
Lai organizētu šo ekosistēmu, izstrādātāji ir ieviesuši komandrindas rīku Kerf . Šī utilīta pārvalda visu instanču dzīves ciklu, paļaujoties uz papildinošiem atvērtā pirmkoda moduļiem. Viens no tiem ir Lazy CMA, kas izpildlaikā piešķir nepārtrauktu fizisko atmiņu, neprasot nekādu pirms sāknēšanas konfigurāciju.
Otrs pīlārs ir DAXFS — modulis, kas ļauj instancēm koplietot failu sistēmas tieši atmiņā; pateicoties tam, Kerf var ielādēt bērnu kodolu tieši Docker konteinera attēla iekšpusē, izmantojot tās failu sistēmu bez emulācijas slāņiem un izmantojot atmiņā esošos deskriptorus tīkla savienošanai bez datu kopēšanas.
Ir vērts pieminēt, ka šī pirmā versija ir izturējusi intensīvus stabilitātes testus 5 līmeņu lapošanas arhitektūrās un aktīvā KASLR vidē, pierādot, ka resursu atgūšana ir pilnīgi droša pat bērna kodola avarē gadījumā.
Ļaujot sadalīt darba slodzes, kas sadūrušās sistēmas bloķējumu dēļ (piemēram, liels skaits atvienošanas vai pārdēvēšanas procesu vienā kešatmiņā), starp atsevišķiem kodoliem, kas saskaņoti ar fizisko procesoru ligzdām, Multikernel Linux demonstrē spēju mērogoties, pārsniedzot veiktspējas barjeras, ko nosaka viens monolīts kodols, atklājot jaunu ēru serveru konsolidācijā un augstas veiktspējas mākoņdatošanā.
Visbeidzot, ja vēlaties uzzināt vairāk, informāciju varat atrast tālāk norādītajā saitē.