Oracle a l'intention de retravailler DTrace pour Linux à l'aide d'eBPF

Société Oracle rapporté sur les travaux de transfert des modifications liées à DTrace vers l'amont et prévoit d'implémenter la technologie de débogage dynamique DTrace au-dessus de l'infrastructure standard du noyau Linux, notamment en utilisant des sous-systèmes tels que eBPF. Initialement, le principal problème lié à l'utilisation de DTrace sous Linux était l'incompatibilité au niveau de la licence, mais en 2018, Oracle sous licence Code DTrace sous GPLv2.

DTrace déjà long temps est proposé dans le cadre d'un noyau étendu pour la distribution Oracle Linux, mais pour son utilisation dans d'autres distributions, il nécessite l'utilisation de correctifs de noyau supplémentaires, ce qui limite l'utilisation de cette technologie. A titre d'exemple, Oracle préparé des instructions détaillées pour installer et utiliser DTrace sur Fedora Linux. Assemblage requis pour l'installation outils et l'utilisation d'un noyau Linux reconstruit à partir de correctifs. Pour automatiser l'exécution de la construction du noyau avec les correctifs Oracle et Fedora, il est proposé scénario.

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 travailler outils de traçage existants.

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é ensemble de patchs pour intégrer le support eBPF dans GCC et ont fait y compris le code pour prendre en charge eBPF dans GNU binutils. Initialement, le backend pour la prise en charge d'eBPF est basé sur les technologies LLVM, mais Oracle est intéressé par l'apparition dans GCC d'une capacité standard à générer des programmes pour eBPF, qui permettra d'utiliser une seule boîte à outils à la fois pour construire le noyau Linux et pour créer des programmes. pour l'eBPF.

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

Ajouter un commentaire