KernelScript 0.1.0

Presentato KernelScript — un linguaggio di programmazione sperimentale per lo sviluppo di programmi eBPF, caricamenti utente e estensioni del kernel Linux da un'unica base di codice. Il progetto è in fase di sviluppo Multikernel Technologies, un'azienda che promuove l'architettura split-kernel / multikernel per Linux. Cong Wang, fondatore dell'azienda, ha parlato di KernelScript al Linux Foundation Open Source Summit; il codice del progetto è stato pubblicato su GitHub sotto licenza Apache 2.0.


eBPF (Extended Berkeley Packet Filter) è una tecnologia che consente di eseguire piccoli programmi direttamente nel kernel Linux, senza modificare il suo codice e senza mettere a rischio la stabilità del sistema. eBPF aiuta a risolvere una serie di problemi, dal monitoraggio delle prestazioni alla sicurezza e all'ottimizzazione della rete. Ad esempio, è possibile utilizzare eBPF per tracciare le chiamate di sistema, il traffico di rete e altri eventi in tempo reale. Questo permette di identificare i colli di bottiglia nelle prestazioni e ottimizzare il sistema (Habr).

L'idea di KernelScript è rendere lo sviluppo di eBPF meno problematico rispetto all'uso della combinazione C + libbpf, senza limitarsi solo al tracciamento, come fa bpftrace. Gli sviluppatori descrivono il linguaggio come un DSL tipizzato e sicuro, che combina eBPF, sviluppo nello spazio utente e kernelspace: da un singolo file sorgente, il compilatore deve generare codice per programmi eBPF, parte userspace e integrazione con i moduli del kernel tramite kfunc.

Funzionalità dichiarate di KernelScript:

  • Compilazione per diversi obiettivi da un singolo file — le funzioni con attributi come @xdp, @tc, @helper e @kfunc vengono automaticamente associate alla parte necessaria: programma XDP/TC, funzione helper, funzione del kernel o codice userspace ordinario.

  • Automazione delle chiamate a coda — invece di configurare manualmente l'array di programmi e le chiamate bpf_tail_call(), si invita lo sviluppatore a scrivere una chiamata regolare a un'altra funzione, lasciando la generazione del codice eBPF a basso livello al compilatore.

  • Lavoro semplificato con dynptr e mappe eBPF — il linguaggio nasconde parte del lavoro manuale con bpf_ringbuf_reserve_dynptr, bpf_dynptr_write e API simili. Le mappe eBPF possono essere utilizzate come variabili globali accessibili a diversi programmi.

  • Controllo del ciclo di vita dei programmi — i programmi eBPF sono presentati come valori tipizzati, il che, secondo gli autori, consente di prevenire errori durante la compilazione, come tentativi di eseguire attach() prima di un caricamento riuscito.

  • Supporto di kfunc KernelScript consente di dichiarare funzioni con l'attributo @kfunc, che vengono eseguite nello spazio del kernel e possono essere richiamate da programmi eBPF; per esse è promessa la generazione automatica di moduli kernel e registrazioni BTF.

  • Supporto per i tipi principali di programmi eBPF Nel README sono mostrati esempi per XDP, TC, probe e perf_event, inclusa la gestione dei contatori hardware delle prestazioni.

Gli autori sottolineano che KernelScript non è un sostituto del kernel Linux o un nuovo runtime eBPF. È piuttosto un compilatore e un linguaggio di alto livello, progettato per generare componenti a basso livello familiari: codice eBPF, caricamenti userspace, Makefile e, se necessario, moduli kernel.

Finora il progetto deve essere considerato come un esperimento iniziale. Nel repository è chiaramente indicato che KernelScript è in fase beta, la sintassi e l'API potrebbero cambiare senza mantenere la compatibilità all'indietro, e il suo utilizzo in produzione non è ancora consigliato.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster