KernelScript 0.1.0

Présenté KernelScript — un langage de programmation expérimental pour le développement de programmes eBPF, de chargeurs personnalisés et d'extensions du noyau Linux à partir d'une seule base de code. Le projet est développé Multikernel Technologies, une société qui promeut l'architecture split-kernel / multikernel pour Linux. Cong Wang, le fondateur de la société, a présenté KernelScript lors du Linux Foundation Open Source Summit; le code du projet est publié sur GitHub sous licence Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — une technologie qui permet d'exécuter de petits programmes directement dans le noyau Linux, sans toucher à son code et sans compromettre la stabilité du système. eBPF aide à résoudre de nombreux problèmes, allant de la surveillance des performances à la sécurité et à l'optimisation réseau. Par exemple, grâce à eBPF, il est possible de suivre les appels système, le trafic réseau et d'autres événements en temps réel. Cela permet d'identifier les goulets d'étranglement en matière de performances et d'optimiser le système (Habr).

L'idée de KernelScript est de rendre le développement eBPF moins douloureux qu'en utilisant une combinaison C + libbpf, tout en ne se limitant pas seulement au traçage, comme avec bpftrace. Les développeurs décrivent le langage comme un DSL typé sécurisé, qui combine eBPF, le développement dans l'espace utilisateur et dans l'espace noyau : à partir d'un seul fichier source, le compilateur doit générer du code pour les programmes eBPF, la partie espace utilisateur et l'intégration avec les modules du noyau via kfunc.

Fonctionnalités déclarées de KernelScript :

  • Compilation pour différentes cibles à partir d'un seul fichier — les fonctions avec des attributs comme @xdp, @tc, @helper et @kfunc sont automatiquement attribuées à la partie nécessaire : programme XDP/TC, fonction helper, fonction du noyau ou code de l'espace utilisateur ordinaire.

  • Automatisation des appels de queue — au lieu d'une configuration manuelle du tableau de programmes et des appels à bpf_tail_call(), on propose aux développeurs d'écrire un simple appel à une autre fonction, laissant la génération de code eBPF de bas niveau au compilateur.

  • Travail simplifié avec dynptr et cartes eBPF — le langage cache une partie du travail manuel avec bpf_ringbuf_reserve_dynptr, bpf_dynptr_write et des API similaires. Les cartes eBPF peuvent être utilisées comme des variables globales accessibles par différents programmes.

  • Contrôle du cycle de vie des programmes — les programmes eBPF sont représentés comme des valeurs typées, ce qui, selon les auteurs, permet de prévenir lors de la compilation des erreurs comme la tentative d'exécuter attach() avant un chargement réussi.

  • Support de kfunc — KernelScript permet de déclarer des fonctions avec l'attribut @kfunc, qui s'exécutent dans l'espace noyau et peuvent être appelées depuis des programmes eBPF ; pour elles, la génération automatique des modules du noyau et des enregistrements BTF est promise.

  • Support des principaux types de programmes eBPF — le README présente des exemples pour XDP, TC, les programmes probe et perf_event, y compris le travail avec des compteurs de performance matériels.

Les auteurs soulignent séparément que KernelScript n'est pas un substitut au noyau Linux ou un nouvel environnement d'exécution eBPF. C'est plutôt un compilateur et un langage de haut niveau qui doit générer des composants bas niveau familiers : le code eBPF, des chargeurs d'espace utilisateur, un Makefile et, si nécessaire, un module du noyau.

Pour l'instant, le projet doit être considéré comme une expérience précoce. Le dépôt indique clairement que KernelScript est en phase beta, la syntaxe et l'API peuvent changer sans conserver de compatibilité ascendante, et son utilisation en production n'est pas encore recommandée.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster