3 Punkte von GN⁺ 2023-12-08 | 1 Kommentare | Auf WhatsApp teilen

Einführung in Tracing-Tools

  • Einführung in verschiedene Tracing-Methoden auf Grundlage von Begeisterung und Erfahrung mit Tracing
  • Einschließlich zweier neuer und interessanter Tracing-Tools
  • Der Kern von Tracing: Erfassung von Zeitstempeldaten aus dem System und Visualisierung in einer Timeline-UI

Daten einfach in einer Timeline-UI visualisieren

  • Visualisierung von Event-Daten in einem einfachen JSON-Format mithilfe des Chromium Event JSON Format
  • Prüfen von Tracing-Dateien mit dem Viewer von Google Perfetto oder Catapult
  • Mit einem Python-Dienstprogramm Trace-Dateien in anklickbare Links umwandeln und teilen

Fortgeschrittene Formate: Fuchsia Trace Format und Perfetto Protobuf

  • Fuchsia Trace Format (FTF): ein einfaches und kompaktes Binärformat für große Trace-Dateien
  • Perfetto Protobuf: ein kompaktes Format mit Unterstützung für mehr Funktionen, erzeugbar über die Protobuf-Bibliothek

Verschiedene Tracing-Tools

  • Vorstellung verschiedener Tools zur Trace-Visualisierung wie Speedscope, pprof und Rerun
  • Erwähnung von Profiler-Viewern wie Trace Compass und Firefox Profiler

Tracing-Methoden

  • Vorstellung von Low-Level-Tracing-Methoden wie Hardware-Breakpoints, perf und GDB-Scripting
  • Nachverfolgung der Programmausführung mit Intel Processor Trace
  • magic-trace: ein Tool zum Erzeugen von Trace-Dateien zur Visualisierung von Funktionsaufrufen

Instrumentierungsbasierte Tracing-Profiler

  • Vergleich instrumentierungsbasierter Tracing-Profiler wie Tracy, Optick und Perfetto
  • Betonung der Bedeutung von Event-Daten mit zusätzlichen Informationen

eBPF

  • Einführung in das eBPF-Subsystem für Tracing mit dem Linux-Kernel
  • Vorstellung von eBPF-Tracing-Tools wie BCC, bpftrace und ply

eBPF-Beispiel: Paket- und User-Event-Tracing auf Perfetto-Basis bei Anthropic

  • Kombination von BCC und Perfetto-Visualisierung zur Analyse von Tail-Latency in Networking-Code
  • Tracing von User-Space-Events mit eBPF und Optimierung der Event-Verarbeitung über C-Helper

Binärinstrumentierung

  • Einführung in Methoden der Binärinstrumentierung für Fälle ohne Zugriff auf den Source Code
  • Beschreibung von Tools wie bpftime, E9Patch und Frida

Distributed Tracing

  • Erwähnung von Lösungen wie OpenTelemetry, Zipkin und Odigos für serviceübergreifendes Tracing

Sampling-Profiler

  • Vorstellung von Profilern, die periodisch den vollständigen Call Stack eines Programms sampeln
  • Verwendung von UIs mit Zeitachse wie Speedscope und Samply

QEMU-Instrumentierung

  • Vorstellung der vollständigen Emulation und des Hookings in QEMU für Fälle, in denen alle anderen Tracing-Tools scheitern
  • Beschreibung von Tools wie Cannoli, QEMU TCG Plugins und usercorn

Meinung von GN⁺

Das Wichtigste an diesem Artikel ist, dass er einen breiten Katalog an Tracing-Methoden bietet, mit denen sich sehr unterschiedliche Problemtypen lösen lassen. Er stellt verschiedene Tracing-Tools und -Methoden auf einem Niveau vor, das auch für Junior-Softwareentwickler leicht verständlich ist, und ist damit äußerst nützlich und interessant für alle, die sich für Tracing interessieren. Besonders das Beispiel aus der Praxis, das eBPF-Tracing mit Perfetto-Visualisierung kombiniert, zeigt das Potenzial für den Einsatz im Arbeitsalltag und kann den Lesern neue Einblicke vermitteln.

1 Kommentare

 
GN⁺ 2023-12-08
Hacker-News-Kommentare
  • Meinung des Spall-Entwicklers:

    • Spall ist einer der im Artikel erwähnten leichtgewichtigen Profiler.
    • Der Blogpost des Autors über den "impliziten Ordnungsbaum" war beeindruckend, und es war gut, die Perspektive einer anderen Person auf Bäume für große Traces zu sehen.
    • Ein eytzinger-geordneter 4-ärer Baum hat kein Problem damit, auch bei mehr als 165 fps über 3 Milliarden Funktionen zu verarbeiten.
    • Derzeit wird an einer Delta-Komprimierung für Zeitstempel gearbeitet, um Events auf kleinerem Raum unterzubringen.
    • Es besteht die Hoffnung, dass Spall in seinem nativen Build mit 128 GB RAM 10 Milliarden Events verarbeiten kann.
  • Empfehlung von ETW für Menschen, die an Windows-Anwendungen arbeiten:

    • Für Leute, die an Windows-Anwendungen arbeiten, wird Event Tracing for Windows (ETW) empfohlen.
    • Bruce Dawsons Blog ist der beste Einstiegspunkt für ETW.
  • Überblick über Open-Source-Lösungen:

    • Dies ist ein ziemlich guter Überblick über die Open-Source-Lösungen in diesem Bereich.
    • Ein wichtiger Bereich des Tracings fehlt: Time-Travel-Debugging.
    • Es gibt interessante Lösungen, die Hardware-Trace, Instrumentierung und deterministische Wiedergabe nutzen.
    • Noch besser wäre eine integrierte Visualisierung, mit der man zu einem bestimmten Zeitpunkt im Programm zurückkehren und den Speicher vollständig rekonstruieren kann, um zu debuggen.
  • Einstellungsansatz bei Anthropic:

    • Der abschließende Hinweis auf die Möglichkeit, bei Anthropic mit Tristan zu arbeiten, ist sehr attraktiv.
    • Tristan erklärt gut, woran gearbeitet werden soll.
    • Es wäre schön, wenn der Blogpost mehr Screenshots von Traces enthalten würde.
  • Technik zur Korrelation von Python-Programmen und Paketen:

    • Bewunderung für die Technik, Korrelationen zwischen User-Space-Events eines Python-Programms und Paketen zu finden, indem Systemaufrufe mit bestimmten Argumenten verfolgt werden.
  • Erfahrung eines Teams, das IDE-Plugins entwickelt:

    • Es wird ein IDE-Plugin entwickelt, das die Funktionen eines traditionellen Debuggers zu einer App im Produktionseinsatz hinzufügt.
    • Nutzer können während der Laufzeit beliebige Variablen analysieren, um zu verstehen, was im Code passiert.
    • Dieses Plugin ist kostenlos.
  • Bedarf der Branche an Profiling der Ausführungskosten von JavaScript:

    • Es wird eine bessere Möglichkeit benötigt, die Ausführungskosten von JavaScript deterministisch zu profilieren.
    • Es gab in Chromium einen Versuch mit Linux perf, aber diese Änderung wurde entfernt.
    • Gesucht werden Tipps, wie sich die Kosten von JavaScript in CI deterministisch messen lassen.
  • Erwähnung von dtrace und der Rant von bcantrill:

    • Der Autor erwähnt dtrace nur kurz.
    • Es wird empfohlen, sich den jüngsten Rant von bcantrill darüber anzusehen, warum bpftrace stillschweigend Events verliert und dtrace das nicht tut.
  • Dank für nützliche Tools:

    • Ausdruck des Dankes für die im Artikel erwähnten nützlichen Tools.