Noong nakaraang taon, tinalakay natin dito sa blog ang isang panukala mula sa ByteDance (tagalikha ng TikTok) para sa isang utility na tinatawag na Parker (PARTitioned KERnel), isang eksperimental na teknolohiya na nagpapahintulot sa maraming Linux kernel na tumakbo nang sabay-sabay. At ngayon, makalipas ang mahigit isang taon at kalahati, isang bagong pampublikong utility mula sa proyekto, ang "Multikernel Linux (mklinux-v7.0-mk2)," ang inilabas.
Ipinakikilala ng pag-unlad na ito ang isang espesyalisadong variant ng Linux kernel na nagbibigay-daan sa sabay-sabay na pagpapatupad ng maraming independiyenteng kernel instance sa loob ng isang pisikal na server. Sa pamamagitan ng direktang pag-operate sa bare metal, ganap na inaalis ng teknolohiyang ito ang pangangailangan para sa mga hypervisor o virtualization layer, na nagbibigay sa bawat instance ng direktang access sa inilaang memorya, CPU, at mga device.
Batay sa kamakailang inilabas na Linux 7.0 kernel, pinapayagan ng proyekto ang pagpapagana ng feature na ito sa pamamagitan ng parameter ng configuration na CONFIG_MULTIKERNEL . Kung hindi pinagana ang opsyong ito, ang resultang kernel ay eksaktong pareho at gagana tulad ng karaniwang Linux 7.0. Sa kasalukuyan, ang unang bersyong ito (v7.0-mk2) ay eksklusibong sumusuporta sa mga arkitekturang x86_64 at idinisenyo upang tulayin ang agwat sa pagganap at seguridad sa pagitan ng tradisyonal na virtualization at container isolation.
Paghihiwalay nang walang parusa sa pagganap
Ang pinakamalaking problema sa virtualization ay ang "buwis" sa pagganap na sinisingil ng mga hypervisor. Sa kabaligtaran, inaalis ng Multikernel Linux ang mga transition sa paglabas ng virtual machine , pagsasalin ng memorya sa pangalawang antas, at ang overhead na nalilikha ng mga modelo ng device.
Ayon sa datos ng pagganap na inilathala matapos ang pagsubok sa mga processor ng Xeon Gold 5418Y (Sapphire Rapids), ang multikernel system ay nagpapakita ng isang dramatikong pagtaas sa bilis ng pagpapatupad kumpara sa mga KVM guest. Halimbawa, ang context switching sa pagitan ng mga proseso ay 2,5 beses na mas mabilis, ang pipe latency ay nababawasan ng higit sa kalahati (2,18x), at ang mga base system call, tulad ng mga operasyon sa pagbasa at pagsulat, ay nakakakuha ng higit sa 25% sa oras ng pagtugon.
Kung ikukumpara sa mga tradisyunal na Docker container, ang Multikernel ay nag-aalok ng higit na mahusay na proteksyon dahil, dahil ang mga container ay nagbabahagi ng parehong host kernel, ang kahinaan sa antas ng kernel, panic, o internal lock saturation ay nakakaapekto sa lahat ng tenant. Sa Multikernel ecosystem, ang bawat environment ay may kanya-kanyang independent kernel ; ibig sabihin, kung ang isang instance ay dumanas ng kritikal na pagkabigo, ang iba ay patuloy na gumagana nang hindi maaapektuhan, na ginagarantiyahan ang isang nakahiwalay na kapaligiran na mainam para sa pagpapatakbo ng lahat mula sa mga web server hanggang sa masinsinang AI training workload (machine learning) sa parehong hardware.
Dinamikong Pagtatalaga at Orkestrasyon gamit ang Kerf
Ang Multikernel Linux ay gumagana gamit ang isang host kernel na namamahala sa isang malaking pool ng mga resources (mga CPU, RAM, at mga PCI device). Gamit ang umiiral na istruktura ng device tree (maa-access sa /sys/fs/multikernel/), hinuhukay ng kernel ang pool na ito at inilulunsad ang mga "child kernel" sa pamamagitan ng native na kexec_file_load() subsystem. Sa pamamagitan ng mga kakayahan ng hotplug ng Linux, ang mga resources na ito ay maaaring dynamic na ilipat sa pagitan ng mga instance nang hindi nangangailangan ng pag-reboot ng server, na tinitiyak ang mahuhulaan at real-time na naaayos na performance.
Upang ayusin ang ecosystem na ito, ipinakilala ng mga developer ang Kerf command-line tool . Pinamamahalaan ng utility na ito ang buong lifecycle ng mga instance, umaasa sa mga komplementaryong open-source module. Isa na rito ang Lazy CMA, na naglalaan ng magkakasunod na pisikal na memorya sa runtime nang hindi nangangailangan ng anumang pre-boot configuration.
Ang isa pang haligi ay ang DAXFS, isang module na nagpapahintulot sa mga instance na direktang magbahagi ng mga file system sa memorya; salamat dito, maaaring mag-boot ang Kerf ng child kernel nang direkta sa loob ng isang Docker container image, sinasamantala ang file system nito nang hindi nangangailangan ng mga emulation layer at gumagamit ng mga in-memory descriptor para sa network interconnection nang walang data copying.
Mahalagang banggitin na ang unang release na ito ay nakapasa sa masinsinang mga pagsubok sa katatagan sa ilalim ng 5-level paging architectures at aktibong KASLR, na nagpapakita na ang resource recovery ay ganap na ligtas kahit na mag-crash ang isang child kernel.
Sa pamamagitan ng pagpapahintulot sa mga workload na nagbanggaan dahil sa mga system lock (tulad ng isang malaking bilang ng mga proseso ng pag-unlink o pagpapalit ng pangalan sa parehong cache) na hatiin sa magkakahiwalay na kernel na nakahanay sa mga pisikal na socket ng processor, ipinapakita ng Multikernel Linux ang kakayahang lumampas sa hadlang sa pagganap na ipinataw ng isang monolitikong kernel, na nagbubukas ng isang bagong panahon sa pagsasama-sama ng server at high-performance cloud computing.
Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.