Presented KernelScript â njĂ« gjuhĂ« eksperimentale programimi pĂ«r zhvillimin e programeve eBPF, bootloader-eve tĂ« personalizuara dhe zgjerimeve tĂ« bĂ«rthamĂ«s Linux nga njĂ« bazĂ« e vetme kode. 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Ă« Samitin e Burimeve tĂ« Hapura tĂ« Fondacionit Linux; kodi i projektit Ă«shtĂ« publikuar nĂ« GitHub nĂ«n licencĂ«n Apache 2.0.
eBPF (Extended Berkeley Packet Filter) â Ă«shtĂ« njĂ« teknologji qĂ« lejon ekzekutimin e programeve tĂ« vogla direkt nĂ« bĂ«rthamĂ«n Linux, pa prekur kodin e saj dhe pa rrezikuar stabilitetin e sistemit. eBPF ndihmon nĂ« zgjidhjen e shumĂ« detyrave, nga monitorimi i performancĂ«s deri te sigurimi dhe optimizimi i rrjetit. PĂ«r shembull, me anĂ« tĂ« eBPF Ă«shtĂ« e mundur tĂ« monitorohen thirrjet sistemike, trafiku rrjet 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ë dhimbshme sesa përdorimi i nënpaketes C + libbpf, dhe në të njëjtën kohë të mos kufizohet vetëm në gjurmim, si bpftrace. Zhvilluesit e përshkruajnë gjuhën si një DSL të sigurisë së tipit, e cila bashkon eBPF, zhvillimin në hapësirën e përdoruesit dhe në bërthamë: nga një skedë burimi, kompajleri duhet të gjenerojë kod për programet e eBPF, pjesën e hapësirës së përdoruesit dhe integrimin me modulat e bërthamës përmes kfunc.
Aftësitë e shpallura të KernelScript:
Kompilimi pĂ«r qĂ«llime tĂ« ndryshme nga njĂ« skedĂ« â funksionet me atribute si @xdp, @tc, @helper dhe @kfunc automatikisht i pĂ«rkasin pjesĂ«s pĂ«rkatĂ«se: programit XDP/TC, funksionit ndihmĂ«s, funksioneve tĂ« bĂ«rthamĂ«s ose kodit tĂ« zakonshĂ«m tĂ« hapĂ«sirĂ«s sĂ« pĂ«rdoruesit.
Automatizimi i thirrjeve tail â nĂ« vend qĂ« tĂ« konfigurojnĂ« manualisht programin array dhe thirrjet bpf_tail_call(), zhvilluesi ofrohet tĂ« shkruajĂ« njĂ« thirrje tĂ« zakonshme tĂ« funksionit tjetĂ«r, ndĂ«rsa gjeneratĂ«n e kodit tĂ« poshtĂ«m eBPF ta lĂ«rĂ« kompajlerit.
PunĂ« e thjeshtuar me dynptr dhe harta eBPF â gjuha fsheh njĂ« pjesĂ« tĂ« punĂ«s manuale me bpf_ringbuf_reserve_dynptr, bpf_dynptr_write dhe API tĂ« ngjashme. Harta eBPF mund tĂ« pĂ«rdoren si variabla globale, tĂ« disponueshme pĂ«r programe tĂ« ndryshme.
Kontrolli i ciklit tĂ« jetĂ«s sĂ« programeve â programet e eBPF paraqiten si vlera tĂ« tipizuara, qĂ«, sipas ideve tĂ« autorĂ«ve, lejojnĂ« parandalimin e gabimeve si pĂ«rpjekja pĂ«r tĂ« ekzekutuar attach() para ngarkimit tĂ« suksesshĂ«m.
MbĂ«shtetje pĂ«r kfunc â KernelScript lejon tĂ« shpallĂ« funksione me atributin @kfunc, qĂ« ekzekutohen nĂ« hapĂ«sirĂ«n e kernelit dhe mund tĂ« thirren nga programet e eBPF; pĂ«r to Ă«shtĂ« premtuar gjenerim automatik tĂ« kernel module dhe regjistrimeve BTF.
MbĂ«shtetje pĂ«r tipet kryesore tĂ« programeve eBPF â nĂ« README jepen shembuj pĂ«r XDP, TC, programe probe dhe perf_event, duke pĂ«rfshirĂ« punĂ«n me numĂ«ruesit e harduerit pĂ«r performancĂ«n.
AutorĂ«t theksojnĂ« se KernelScript nuk Ă«shtĂ« njĂ« zĂ«vendĂ«sim pĂ«r kernelin Linux ose njĂ« runtime tĂ« ri eBPF. ĂshtĂ« mĂ« shumĂ« njĂ« kompiler dhe njĂ« gjuhĂ« e nivelit tĂ« lartĂ«, e cila duhet tĂ« gjenerojĂ« komponentĂ«t e zakonshĂ«m tĂ« niveleve tĂ« ulĂ«ta: kodi eBPF, ngarkuesit e userspace, Makefile dhe, nĂ«se Ă«shtĂ« e nevojshme, kernel module.
Aktualisht projekti duhet të perceptohet si një eksperiment fillestar. Në depo është thënë qartë se KernelScript është në fazën beta, sintaksa dhe API mund të ndryshojnë pa mbajtur përputhshmëri të prapme, dhe përdorimi i tij në production nuk rekomandohet ende.
Burimi: linux.org.ru
