KernelScript 0.1.0

Præsenteret KernelScript — et eksperimentelt programmeringssprog til udvikling af eBPF-programmer, brugerdefinerede bootloadere og kernel-udvidelser fra en enkelt kodebase. Projektet udvikler Multikernel Technologies, et firma der promoverer split-kernel / multikernel arkitektur til Linux. Cong Wang, virksomhedens grundlægger, præsenterede KernelScript ved Linux Foundation Open Source Summit; projektkoden er offentliggjort på GitHub under licensen Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — en teknologi der tillader kørsel af små programmer direkte i Linux-kernen, uden at ændre dens kode og uden at riskere systemets stabilitet. eBPF hjælper med at løse mange opgaver, fra overvågning af ydeevne til sikkerhed og netværksoptimering. For eksempel kan eBPF bruges til at spore systemopkald, netværkstrafik og andre begivenheder i realtid. Dette gør det muligt at finde flaskehalse i ydeevnen og optimere systemet (Habr).

Idéen bag KernelScript er at gøre udviklingen af eBPF mindre smertefuld end ved brug af kombinationen C + libbpf, og ikke kun begrænse sig til tracing, som bpftrace gør. Udviklerne beskriver sproget som en type-sikker DSL, der kombinerer eBPF, brugerdefineret rum og kernelspace-udvikling: fra en enkelt kildefil skal compileren generere kode til eBPF-programmer, userspace-delen og integration med kernel-moduler gennem kfunc.

De angivne funktioner af KernelScript:

  • Kompilering til forskellige mål fra en enkelt fil — funktioner med attributter som @xdp, @tc, @helper og @kfunc henføres automatisk til den relevante del: XDP/TC-programmet, helper-funktionen, kernel-funktionen eller almindelig userspace-kode.

  • Automatisering af tail calls — i stedet for manuel opsætning af program array og kald af bpf_tail_call() opfordres udvikleren til at skrive et almindeligt kald til en anden funktion, mens lavniveau eBPF-kodegenerering overlades til compileren.

  • Forenklet arbejde med dynptr og eBPF maps — sproget skjuler en del af det manuelle arbejde med bpf_ringbuf_reserve_dynptr, bpf_dynptr_write og lignende API. eBPF-kort kan bruges som globale variabler, der er tilgængelige for forskellige programmer.

  • Kontrol af livscyklussen for programmer — eBPF-programmer præsenteres som typede værdier, hvilket ifølge forfatternes plan forhindrer fejl som f.eks. at forsøge at udføre attach() før successful load().

  • Support for kfunc KernelScript muliggør deklarering af funktioner med @kfunc-attributten, som kører i kernens rum og kan kaldes fra eBPF-programmer; der lover automatisk generation af kernel modul og BTF-registreringer.

  • Understøttelse af de grundlæggende typer eBPF-programmer — README viser eksempler for XDP, TC, probe-programmer og perf_event, inklusive arbejde med hardware-ydeevnemålere.

Forfatterne understreger, at KernelScript ikke er en erstatning for Linux-kernen eller en ny eBPF-runtime. Det er snarere en compiler og et højniveau-sprog, der skal generere de velkendte lavniveau-komponenter: eBPF-kode, userspace-ladere, Makefile og, om nødvendigt, kernel modul.

Projektet bør i øjeblikket betragtes som et tidligt eksperiment. I repositoriet står der klart, at KernelScript er i beta, syntaksen og API'et kan ændre sig uden at bevare bagudkompatibilitet, og det anbefales ikke at bruge det i produktion endnu.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster