Société Oracle
DTrace déjà
eBPF est un interpréteur de bytecode intégré au noyau Linux qui vous permet de créer des gestionnaires d'opérations réseau, de surveiller le fonctionnement du système, d'intercepter les appels système, de contrôler l'accès, de traiter les événements avec chronométrage (perf_event_open), de compter la fréquence et le temps d'exécution des opérations, d'effectuer un traçage à l'aide de kprobes. /sondes/points de trace. Grâce à l'utilisation de la compilation JIT, le bytecode est traduit à la volée en instructions machine et exécuté avec les performances du code natif. DTrace peut être implémenté sur eBPF, de la même manière qu'il est implémenté sur eBPF
La technologie DTrace a été développée pour le système d'exploitation Solaris afin de résoudre le problème du traçage dynamique du noyau du système et des applications finales, donnant à l'utilisateur la possibilité de surveiller le comportement du système en détail et de diagnostiquer les problèmes en temps réel. Lors du processus de débogage, DTrace n'affecte pas le fonctionnement des applications étudiées et n'affecte en rien leurs performances, ce qui permet d'organiser l'analyse des systèmes en cours d'exécution à la volée. L'un des points forts de DTrace est le langage D de haut niveau, similaire à AWK, dans lequel il est beaucoup plus facile de créer des scripts de traçage que d'utiliser les outils proposés pour écrire des gestionnaires eBPF en C, Python et Lua avec des bibliothèques externes.
Les ingénieurs d'Oracle travaillent également sur la création d'un backend eBPF pour GCC et ont déjà publié
En plus du backend de génération de bytecode, les correctifs proposés pour GCC incluent également un port libgcc pour eBPF et des outils de génération de fichiers ELF, permettant d'exécuter du code dans la machine virtuelle eBPF à l'aide des chargeurs fournis par le noyau. Pour l'instant, le code du langage C peut être traduit en bytecode (toutes les fonctionnalités du langage ne sont pas disponibles), mais à l'avenir, il devrait étendre les capacités du langage C disponibles, ajouter la prise en charge d'autres langages, créer un simulateur et ajoutez la prise en charge de GCC pour le débogage des programmes eBPF sans chargement dans le noyau.
Source: opennet.ru