KernelScript 0.1.0

Představení KernelScript — experimentální programovací jazyk pro vývoj eBPF programů, uživatelských zaváděčů a rozšíření jádra Linuxu z jediné kódové základny. Projekt vyvíjí Multikernel Technologies, společnost, která propaguje architekturu split-kernel / multikernel pro Linux. O KernelScript hovořil zakladatel společnosti Cong Wang na Linux Foundation Open Source Summit; kód projektu byl zveřejněn na GitHubu pod licencí Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — technologie, která umožňuje spouštět malé programy přímo v jádře Linuxu, aniž by se dotýkala jeho kódu a ohrožovala stabilitu systému. eBPF pomáhá řešit řadu úloh, od monitorování výkonu po zabezpečení a optimalizaci sítě. Například pomocí eBPF lze sledovat systémové volání, síťový provoz a další události v reálném čase. To umožňuje identifikovat úzká místa ve výkonu a optimalizovat systém (Habr).

Myšlenka KernelScript — učinit vývoj eBPF méně bolestivým než při použití kombinace C + libbpf, a přitom se neomezovat pouze na trasování, jako je bpftrace. Vývojáři popisují jazyk jako typově bezpečný DSL, který spojuje eBPF, vývoj uživatelského prostoru a kernelspace: z jednoho zdrojového souboru by kompilátor měl generovat kód pro eBPF programy, část userspace a integraci s kernelovými moduly přes kfunc.

Uvedené možnosti KernelScript:

  • Kompilace pro různé cíle z jednoho souboru — funkce s atributy jako @xdp, @tc, @helper a @kfunc jsou automaticky přiřazovány k potřebné části: XDP/TC program, helper funkce, kernel funkce nebo běžný userspace kód.

  • Automatizace tail calls — místo ruční konfigurace program array a volání bpf_tail_call() se vývojářům nabízí psát běžné volání jiné funkce, přičemž generaci nízkoúrovňového eBPF kódu ponechávají kompilátoru.

  • Zjednodušená práce s dynptr a eBPF maps — jazyk skrývá část manuální práce s bpf_ringbuf_reserve_dynptr, bpf_dynptr_write a podobnými API. eBPF mapy lze používat jako globální proměnné, které jsou dostupné různým programům.

  • Kontrola životního cyklu programů — eBPF programy jsou zastoupeny jako typované hodnoty, což podle autorů umožňuje na úrovni kompilace předejít chybám, jako je pokus o vykonání attach() před úspěšným načtením.

  • Podpora kfunc — KernelScript umožňuje deklarovat funkce s atributem @kfunc, které se vykonávají v jádrovém prostoru a mohou být volány z eBPF programů; pro ně je slíbena automatická generace kernel modulu a BTF registrací.

  • Podpora hlavních typů eBPF programů — v README jsou uvedeny příklady pro XDP, TC, probe programy a perf_event, včetně práce s hardwarovými měřiči výkonu.

Autoři zdůrazňují, že KernelScript není náhradou za jádro Linuxu nebo nový eBPF runtime. Je to spíše překladač a jazyk vyšší úrovně, který má generovat obvyklé nízkoúrovňové komponenty: eBPF kód, userspace načítače, Makefile a, pokud je to nutné, kernel modul.

Projekt by měl být zatím považován za raný experiment. V repozitáři je přímo uvedeno, že KernelScript je v fázi beta, syntaxe a API se mohou měnit bez zachování zpětné kompatibility, a jeho použití v produkci se prozatím nedoporučuje.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster