TĂ« paraqitura KernelScript â njĂ« gjuhĂ« eksperimentale programimi pĂ«r zhvillimin e programeve eBPF, ngarkuesve personal dhe zgjerimeve tĂ« bĂ«rthamĂ«s Linux nga njĂ« bazĂ« kodimi e vetme. Projekti zhvillon Multikernel Technologies, njĂ« kompani qĂ« promovon arkitekturĂ«n split-kernel / multikernel pĂ«r Linux. Rreth KernelScript foli themeluesi i kompanisĂ« Cong Wang nĂ« Linux Foundation Open Source Summit; kodi i projektit Ă«shtĂ« publikuar nĂ« GitHub nĂ«n licencĂ«n Apache 2.0.
eBPF (Extended Berkeley Packet Filter) â njĂ« teknologji qĂ« lejon ekzekutimin e programeve tĂ« vogla drejtpĂ«rdrejt nĂ« bĂ«rthamĂ«n Linux, pa prekur kodin e saj dhe pa rrezikuar stabilitetin e sistemit. eBPF ndihmon nĂ« zgjidhjen e shumĂ« problemeve, nga monitorimi i performancĂ«s deri nĂ« sigurinĂ« dhe optimizimin e rrjetit. PĂ«r shembull, me anĂ« tĂ« eBPF mund tĂ« ndiqni thirrjet sistemore, trafikun rrjetor dhe ngjarje tĂ« tjera nĂ« kohĂ« reale. Kjo lejon identifikimin e ngushticave nĂ« performancĂ« dhe optimizimin e sistemit (Habr).
Ideja e KernelScript është të bëjë zhvillimin e eBPF më pak të dhimbshëm se sa duke përdorur kombinimin C + libbpf, dhe në të njëjtën kohë të mos kufizohet vetëm në gjurmim, siç është bpftrace. Zhvilluesit përshkruajnë gjuhën si një DSL të sigurt në tipe, e cila bashkon eBPF, hapësira e përdoruesit dhe zhvillimi kernelspace: nga një skedar burimi, kompajleri duhet të gjenerojë kod për programet e eBPF, pjesët e hapësirës së përdoruesit dhe integrimin me modulat kernel përmes kfunc.
Aftësitë e shpallura të KernelScript:
Kompilimi pĂ«r qĂ«llime tĂ« ndryshme nga njĂ« skedar â funksionet me atributet si @xdp, @tc, @helper dhe @kfunc automatikisht i pĂ«rkasin pjesĂ«s pĂ«rkatĂ«se: programit XDP/TC, funksionit ndihmĂ«s, funksionit kernel ose kodit tĂ« zakonshĂ«m tĂ« hapĂ«sirĂ«s sĂ« pĂ«rdoruesit.
Automatizimi i thirrjeve tail â nĂ« vend tĂ« konfiguruar manualisht program array dhe thirrjeve bpf_tail_call(), zhvilluesit propozojnĂ« tĂ« shkruajnĂ« njĂ« thirrje tĂ« zakonshme tĂ« funksionit tjetĂ«r, duke lĂ«nĂ« gjenerimin e kodit tĂ« eBPF tĂ« nivelit tĂ« ulĂ«t te kompajleri.
PunĂ« e thjeshtuar me dynptr dhe hartat e eBPF â gjuha fsheh njĂ« pjesĂ« tĂ« punĂ«s manuale me bpf_ringbuf_reserve_dynptr, bpf_dynptr_write dhe API tĂ« ngjashme. Hartat e eBPF mund tĂ« pĂ«rdoren si variabla globale, tĂ« qasshĂ«m nga programe tĂ« ndryshme.
Kontrolli i ciklit tĂ« jetĂ«s sĂ« programeve â programet e eBPF paraqiten si vlera tĂ« tipizuara, qĂ«, sipas autorĂ«ve, lejon parandalimin e gabimeve si tentativa pĂ«r tĂ« kryer attach() para ngarkesĂ«s sĂ« suksesshme.
MbĂ«shtetje pĂ«r kfunc â KernelScript le pozwonĂ« tĂ« shpallin funksione me atributin @kfunc, tĂ« cilat ekzekutohen nĂ« hapĂ«sirĂ«n e bĂ«rthamas dhe mund tĂ« thirren nga programet e eBPF; pĂ«r to Ă«shtĂ« premtuar gjenerimi automatik i kernel module dhe regjistrimeve BTF.
PĂ«rkrahja e tipeve kryesore tĂ« programeve eBPF â nĂ« README janĂ« paraqitur shembuj pĂ«r XDP, TC, programet e probe dhe perf_event, duke pĂ«rfshirĂ« punĂ«n me matĂ«sit e performancĂ«s harduerike.
Autorët theksojnë veçmas se KernelScript nuk është zëvendësim për bërthamën Linux ose një runtime të ri eBPF. Kjo është më shumë një kompajler dhe një gjuhë e nivelit të lartë, e cila duhet të gjenerojë komponentët e ulët-standard që janë të zakonshëm: kodi eBPF, ngarkuesit për userspace, Makefile dhe, kur është e nevojshme, kernel module.
Derisa projekti duhet të perceptohet si një eksperiment të hershëm. Në depot përmendet qartë se KernelScript është në fazën beta, sintaksa dhe API mund të ndryshojnë pa ruajtur ndonjë përputhshmëri prapa, dhe përdorimi i saj në production nuk rekomandohet ende.
Burimi: linux.org.ru
