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
Hacker-News-Kommentare
Meinung des Spall-Entwicklers:
Empfehlung von ETW für Menschen, die an Windows-Anwendungen arbeiten:
Überblick über Open-Source-Lösungen:
Einstellungsansatz bei Anthropic:
Technik zur Korrelation von Python-Programmen und Paketen:
Erfahrung eines Teams, das IDE-Plugins entwickelt:
Bedarf der Branche an Profiling der Ausführungskosten von JavaScript:
Erwähnung von dtrace und der Rant von bcantrill:
Dank für nützliche Tools: