KernelScript 0.1.0

Bemutatva KernelScript — egy kísérleti programozási nyelv az eBPF-programok, felhasználói betöltők és a Linux kernel kiterjesztéseinek fejlesztéséhez egyetlen kódbázisból. A projekt folytatja Multikernel Technologies, egy olyan cég, amely a split-kernel / multikernel architektúrát népszerűsíti Linuxhoz. A KernelScript-ről a cég alapítója, Cong Wang beszélt a Linux Alapítvány Nyílt Forráskódú Csúcstalálkozóján; a projekt kódja a GitHubon található, publikált licenc alatt Apache 2.0.


Az eBPF (Extended Berkeley Packet Filter) egy technológia, amely lehetővé teszi, hogy kis programokat futtassunk a Linux kernelben anélkül, hogy megérintetnénk a kódját, és ne kockáztatnánk a rendszer stabilitását. Az eBPF számos feladat megoldásában segít, a teljesítményfigyeléstől kezdve a biztonság és a hálózati optimalizáció biztosításáig. Például az eBPF segítségével valós időben nyomon lehet követni a rendszerhívásokat, a hálózati forgalmat és más eseményeket. Ez lehetővé teszi a teljesítmény szűk keresztmetszeteinek azonosítását és a rendszer optimalizálását (Habr).

A KernelScript ötlete, hogy az eBPF fejlesztését kevésbé megterhelővé tegye, mint a C + libbpf kombinációval, és ne korlátozódjon csupán a nyomkövetésre, mint a bpftrace. A fejlesztők a nyelvet típusbiztos DSL-ként írják le, amely ötvözi eBPF, a felhasználói és kernelspace fejlesztést: egyetlen forrásfájlból a fordítónak kell generálnia a kódot eBPF-programokhoz, a felhasználói tér részéhez és az integrációhoz kernel modulokkal a kfunc-on keresztül.

A KernelScript által ígért lehetőségek:

  • Különböző célokra való fordítás egy fájlból — a @xdp, @tc, @helper és @kfunc attribútumokkal rendelkező funkciók automatikusan a megfelelő részhez tartoznak: XDP/TC program, helper funkció, kernel funkció vagy normál felhasználói tér kód.

  • A tail calls automatizálása — a programtömb manuális beállítása és a bpf_tail_call() hívások helyett a fejlesztőknek javasolt a másik funkció egyszerű hívása, míg az alacsony szintű eBPF-kód generálását a fordítóra bízzák.

  • Egyszerűsített munka a dynptr és eBPF térképekkel — a nyelv elrejti a bpf_ringbuf_reserve_dynptr, bpf_dynptr_write és hasonló API-k kézi kezelésének egy részét. Az eBPF térképek globális változókként használhatók, amelyek különböző programok számára elérhetők.

  • A programok életciklusának ellenőrzése — az eBPF-programok típusbiztos értékként vannak megjelenítve, ami elképzelés szerint lehetővé teszi a fordítási szakaszban olyan hibák elkerülését, mint például a attach() hívása a sikeres load() előtt.

  • A kfunc támogatása — A KernelScript lehetővé teszi a @kfunc attribútummal rendelkező funkciók deklarálását, amelyek a mag térben hajtódnak végre, és eBPF programokból hívhatók; számukra automatikus kernel modul és BTF regisztrációk generálását ígérik.

  • Főbb eBPF programtípusok támogatása — A README példákat tartalmaz XDP, TC, probe programokra és perf_eventre, beleértve a hardveres teljesítménymérőkkel való munkát is.

A szerzők külön hangsúlyozzák, hogy a KernelScript nem helyettesíti a Linux magot vagy az új eBPF runtime-ot. Ez inkább egy fordító és egy magas szintű nyelv, amelynek célja a megszokott alacsony szintű komponensek, mint az eBPF kód, felhasználói területű betöltők, Makefile és szükség esetén kernel modul generálása.

Jelenleg a projektet korai kísérletként kell kezelni. A repóban egyértelműen szerepel, hogy a KernelScript a betastádiumban van, a szintaxis és az API változhat visszamenőleges kompatibilitás nélkül, és production környezetben való használata jelenleg nem ajánlott.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster