KernelScript 0.1.0

Esitletud KernelScript — eksperimentaalne programmeerimiskeel eBPF-programmide, kasutajate laadijate ja Linuxi tuumalaienemiste arendamiseks ühest koodibaasist. Projekti arendab Multikernel Technologies, ettevõte, mis edendab split-kernel / multikernel arhitektuuri Linuxile. KernelScriptist rääkis ettevõtte asutaja Cong Wang Linux Foundation Open Source Summit'il; projekti kood on avaldatud GitHubis litsentsi all Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — tehnoloogia, mis võimaldab käivitada väikeseid programme otse Linuxi tuumas, seda puudutamata ja süsteemi stabiilsust ohustamata. eBPF aitab lahendada mitmeid probleeme, alates toimivuse jälgimisest kuni turva- ja võrguoptimeerimiseni. Näiteks võimaldab eBPF jälgida süsteemi kutsungeid, võrgu liiklust ja muid sündmusi reaalajas. See aitab leida kitsaskohti toimivuses ja optimeerida süsteemi (Habr).

KernelScript'i idee on muuta eBPFi arendamine vähem valusaks kui C + libbpf kombinatsiooniga, samas mitte piirduda ainult jälgimisega nagu bpftrace. Arendajad kirjeldavad keelt kui tüübikindlat DSL-i, mis ühendab eBPF, kasutajaruumi ja kernelspace arendamine: ühest lähtefailist peab kompilaator genereerima koodi eBPF-programmide, kasutajaruumi osade ja integreerimise jaoks kernel moodulitega kfunc kaudu.

KernelScripti väljakuulutatud võimalused:

  • Kompileerimine erinevate sihtide jaoks ühest failist — atribuutidega funktsioonid nagu @xdp, @tc, @helper ja @kfunc kuuluvad automaatselt vajaliku ossa: XDP/TC programmidesse, helper-funktsioonidesse, kernel-funktsioonidesse või tavalisse kasutajaruumi koodi.

  • Tail callide automatiseerimine — käsitsi program array seadistamise ja bpf_tail_call() kutsumise asemel soovitatakse arendajal kirjutada tavaline teise funktsiooni kutsumine, jättes madala taseme eBPF-koodi genereerimise kompilaatorile.

  • Lihtsustatud töö dynptr ja eBPF kaardiga — keel varjab osa käsitsi tööst bpf_ringbuf_reserve_dynptr, bpf_dynptr_write ja sarnaste API-dega. eBPF kaarte saab kasutada nagu globaalset muutuvaid, mis on erinevatele programmidele kergesti ligipääsetavad.

  • Programmide elutsükli kontroll — eBPF programmid esitatakse tüübitud väärtustena, mis autorite arvates võimaldab kompileerimise ajal vältida vigu, nagu näiteks attach() proovimine enne eduka laadimise toimumist.

  • Kfunci tugi — KernelScript võimaldab deklareerida @kfunc atribuudiga funktsioone, mis töötavad kernelis ja mida saab kutsuda eBPF-programmidest; nende jaoks on lubatud automaatne kernel mooduli ja BTF-registreerimise genereerimine.

  • Peamiste eBPF-programmi tüüpide tugi — README-s on näidatud näiteid XDP, TC, probe-programmide ja perf_event kohta, sealhulgas tööriistadega, mis käsitlevad riistvaralisi jõudluskalkulaatoreid.

Autorid rõhutavad eraldi, et KernelScript ei asenda Linuxi kernelit ega ole uus eBPF käituskeskkond. See on pigem kompilaator ja kõrgem taseme keel, mille eesmärk on genereerida tuttavad madala taseme komponendid: eBPF-kood, userspace-laadijad, Makefile ja vajadusel kernel moodul.

Praegu tuleb projekti käsitleda varajase katsetusena. Repos on otseselt öeldud, et KernelScript on staadiumis beta, süntaks ja API võivad muutuda tagasipöördumise ühilduvust säilitamata, ning selle kasutamine tootmises ei ole hetkel soovitatav.

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster