3 points par GN⁺ 2023-12-08 | 1 commentaires | Partager sur WhatsApp

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, perf et 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

 
GN⁺ 2023-12-08
Commentaires Hacker News
  • Avis du développeur de Spall :

    • Spall est l’un des profileurs légers mentionnés dans l’article.
    • Le billet de blog de l’auteur sur l’« arbre à ordre implicite » était impressionnant, et c’était intéressant de voir le point de vue de quelqu’un d’autre sur les arbres pour les grosses traces.
    • L’arbre quaternaire eytzinger-ordered n’a aucun problème à traiter plus de 3 milliards de fonctions, même au-delà de 165 fps.
    • Il travaille actuellement sur la compression delta des horodatages afin de faire tenir les événements dans un espace plus réduit.
    • Il espère que le build natif de Spall pourra traiter 10 milliards d’événements avec 128 Go de RAM.
  • Recommandation d’ETW pour les développeurs d’applications Windows :

    • Recommande Event Tracing for Windows (ETW) à ceux qui travaillent sur des applications Windows.
    • Le blog de Bruce Dawson est le meilleur point de départ sur ETW.
  • Vue d’ensemble des solutions open source :

    • C’est une vue d’ensemble assez bonne des solutions open source dans ce domaine.
    • Un domaine important du traçage manque : le débogage temporel.
    • Il existe des solutions intéressantes qui exploitent la trace matérielle, l’instrumentation et la relecture déterministe.
    • Ce serait encore mieux avec une intégration visuelle permettant de revenir à un moment précis du programme et de reconstruire entièrement la mémoire pour déboguer.
  • La manière de recruter chez Anthropic :

    • La dernière proposition concernant l’opportunité de travailler avec Tristan chez Anthropic est très séduisante.
    • Tristan explique bien sur quoi il travaille.
    • Ce serait bien qu’il y ait davantage de captures d’écran des traces dans le billet de blog.
  • Technique de corrélation entre programme Python et paquets :

    • Admiration pour la technique qui consiste à tracer les appels système avec certains arguments afin de trouver une corrélation entre les événements en espace utilisateur d’un programme Python et les paquets.
  • Expérience d’une équipe développant un plugin IDE :

    • L’équipe développe un plugin IDE qui ajoute aux applications en production des fonctionnalités de débogueur traditionnel.
    • Il permet aux utilisateurs d’analyser des variables arbitraires pendant l’exécution afin de comprendre ce qui se passe dans le code.
    • Ce plugin est gratuit.
  • Le besoin du secteur en profilage du coût d’exécution JavaScript :

    • Il faut une meilleure manière de profiler de façon déterministe le coût d’exécution de JavaScript.
    • Il y a eu une tentative dans Chromium avec Linux perf, mais cette modification a été supprimée.
    • Il aimerait connaître des conseils sur la manière de mesurer de façon déterministe le coût de JavaScript en CI.
  • Mention de dtrace et coup de gueule de bcantrill :

    • L’auteur mentionne brièvement dtrace.
    • Recommande de consulter le récent coup de gueule de bcantrill sur le fait que bpftrace perd silencieusement des événements et pourquoi dtrace ne le fait pas.
  • Remerciements pour les outils utiles :

    • Expression de gratitude pour les outils utiles mentionnés dans l’article.