Présentation des outils de traçage
- Présentation de différentes méthodes de traçage, nourrie par une passion et une expérience du traçage
- Inclut 2 outils de traçage nouveaux et intéressants
- Le cœur du traçage : collecter des données horodatées produites par le système et les visualiser dans une interface chronologique
Visualiser facilement les données dans une interface chronologique
- Visualisation de données d’événements au format JSON simple à l’aide du Chromium Event JSON Format
- Consultation des fichiers de trace via le visualiseur Perfetto de Google ou Catapult
- Utilisation d’un utilitaire Python pour convertir les fichiers de trace en liens cliquables et les partager
Formats avancés : Fuchsia Trace Format et Perfetto Protobuf
- Fuchsia Trace Format (FTF) : format binaire simple et compact pour les gros fichiers de trace
- Perfetto Protobuf : format compact prenant en charge davantage de fonctionnalités, générable via la bibliothèque Protobuf
Divers outils de traçage
- Présentation de divers outils de visualisation de traces comme Speedscope, pprof et Rerun
- Mention de visualiseurs de profilage comme Trace Compass et Firefox Profiler
Méthodes de traçage
- Présentation de méthodes de traçage bas niveau comme les points d’arrêt matériels,
perfet le scripting GDB - Suivi de l’exécution des programmes à l’aide d’Intel Processor Trace
magic-trace: outil générant des fichiers de trace pour visualiser les appels de fonctions
Profileurs de traçage basés sur l’instrumentation
- Comparaison de profileurs de traçage basés sur l’instrumentation comme Tracy, Optick et Perfetto
- Mise en avant de l’importance des données d’événements enrichies d’informations supplémentaires
eBPF
- Présentation du sous-système eBPF pour le traçage à l’aide du noyau Linux
- Présentation d’outils de traçage eBPF comme BCC, bpftrace et ply
Exemple eBPF : traçage des paquets et des événements utilisateur basé sur Perfetto chez Anthropic
- Combinaison de BCC et de la visualisation Perfetto pour analyser la latence de fin de distribution dans le code réseau
- Traçage des événements en espace utilisateur avec eBPF et optimisation du traitement des événements via un helper C
Instrumentation binaire
- Présentation de méthodes d’instrumentation binaire utilisées lorsqu’il est impossible d’accéder au code source
- Explication d’outils comme bpftime, E9Patch et Frida
Traçage distribué
- Mention de solutions comme OpenTelemetry, Zipkin et Odigos pour le traçage entre services
Profileurs par échantillonnage
- Présentation de profileurs qui échantillonnent périodiquement l’ensemble de la pile d’appels d’un programme
- Utilisation d’interfaces incluant un axe temporel, comme Speedscope et Samply
Instrumentation de QEMU
- Émulation complète et hooking de QEMU, à utiliser lorsque tous les autres outils de traçage échouent
- Présentation d’outils comme Cannoli, QEMU TCG Plugins et usercorn
L’avis de GN⁺
Le point le plus important de cet article est qu’il propose un vaste catalogue de méthodes de traçage pouvant servir à résoudre des problèmes de nature très diverse. Il présente différents outils et approches de traçage à un niveau accessible même à des ingénieurs logiciels débutants, ce qui en fait une lecture très utile et intéressante pour toute personne curieuse du traçage. En particulier, l’exemple concret combinant le traçage eBPF et la visualisation Perfetto montre bien le potentiel d’application en situation réelle et peut offrir de nouveaux éclairages aux lecteurs.
1 commentaires
Commentaires Hacker News
Avis du développeur de Spall :
Recommandation d’ETW pour les développeurs d’applications Windows :
Vue d’ensemble des solutions open source :
La manière de recruter chez Anthropic :
Technique de corrélation entre programme Python et paquets :
Expérience d’une équipe développant un plugin IDE :
Le besoin du secteur en profilage du coût d’exécution JavaScript :
Mention de dtrace et coup de gueule de bcantrill :
Remerciements pour les outils utiles :