KernelScript 0.1.0

Įvesta KernelScript — eksperimentinė programavimo kalba, skirta kurti eBPF programas, naudotojų įkroviklius ir branduolio plėtinius Linux iš vienos kodo bazės. Projektas yra kuriamas Daugiabranduolės technologijos, bendrovė, reklamuojanti padalinto branduolio / daugiabranduolę architektūrą LinuxĮmonės įkūrėjas Cong Wang kalbėjo apie „KernelScript“ Linux Fondo atvirojo kodo aukščiausiojo lygio susitikimas; projekto kodas publikuojamas „GitHub“ pagal licenciją Apache 2.0.


eBPF (išplėstinis Berkeley paketų filtras) yra technologija, leidžianti mažoms programoms veikti tiesiai branduolyje. Linux, neliečiant jo kodo ir nepakenkiant sistemos stabilumui. eBPF padeda atlikti įvairias užduotis – nuo ​​našumo stebėjimo iki saugumo ir tinklo optimizavimo. Pavyzdžiui, eBPF gali stebėti sistemos iškvietimus, tinklo srautą ir kitus įvykius realiuoju laiku. Tai leidžia nustatyti našumo kliūtis ir optimizuoti sistemą.Habr).

„KernelScript“ idėja – padaryti eBPF kūrimą mažiau varginančiu nei naudojant C + libbpf derinį, tuo pačiu neapsiribojant vien tik sekimu, kaip „bpftrace“. Kūrėjai kalbą apibūdina kaip tipo atžvilgiu saugų DSL, kuris integruoja eGMP, vartotojų erdvės ir branduolio erdvės kūrimas: iš vieno šaltinio failo kompiliatorius turi sugeneruoti kodą eBPF programoms, vartotojų erdvės daliai ir integracijai su branduolio moduliais per kfunc.

Nurodytos „KernelScript“ galimybės:

  • Kompiliavimas skirtingiems tikslams iš vieno failo — funkcijos su atributais, tokiais kaip @xdp, @tc, @helper ir @kfunc, automatiškai priskiriamos teisingai daliai: XDP/TC programai, pagalbinei funkcijai, branduolio funkcijai arba įprastam vartotojo erdvės kodui.

  • Uodegų skambučių automatizavimas — užuot rankiniu būdu konfigūruojus programos masyvą ir iškvietus bpf_tail_call(), kūrėjo prašoma parašyti įprastą iškvietimą į kitą funkciją ir palikti žemo lygio eBPF kodo generavimą kompiliatoriui.

  • Supaprastintas darbas su „dynptr“ ir „eBPF“ žemėlapiais — kalba paslepia dalį rankinio darbo su bpf_ringbuf_reserve_dynptr, bpf_dynptr_write ir panašiomis API. eBPF žemėlapiai gali būti naudojami kaip globalūs kintamieji, prieinami skirtingoms programoms.

  • Programinės įrangos gyvavimo ciklo valdymas — eBPF programos pateikiamos kaip tipizuotos reikšmės, kurios, anot autorių, leidžia išvengti klaidų kompiliavimo metu, pavyzdžiui, bandymo vykdyti attach() prieš sėkmingą load().

  • kfunc palaikymas — „KernelScript“ leidžia deklaruoti funkcijas su atributu @kfunc, kurios vykdomos branduolio erdvėje ir gali būti iškviestos iš eBPF programų; joms žadamas automatinis branduolio modulio ir BTF registracijų generavimas.

  • Palaikymas pagrindiniams eBPF programų tipams — README faile pateikiami XDP, TC, zondavimo programų ir perf_event pavyzdžiai, įskaitant darbą su aparatinės įrangos našumo skaitikliais.

Autoriai ypač pabrėžia, kad „KernelScript“ nepakeičia branduolio. Linux arba naujoji eBPF vykdymo aplinka. Tai labiau kompiliatorius ir aukšto lygio kalba, kuri turėtų generuoti pažįstamus žemo lygio komponentus: eBPF kodą, vartotojų erdvės įkroviklius, Makefile failus ir, jei reikia, branduolio modulį.

Kol kas projektą reikėtų laikyti ankstyvuoju eksperimentu. Saugykloje aiškiai nurodyta, kad „KernelScript“ yra kūrimo stadijoje. beta, sintaksė ir API gali būti keičiamos neišlaikant atgalinio suderinamumo, todėl jos naudojimas gamyboje kol kas nerekomenduojamas.

Šaltinis: linux.org.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster