8 Punkte von GN⁺ 2025-03-11 | 1 Kommentare | Auf WhatsApp teilen
  • Strobelight ist Metas Profiling-Orchestrator, der mehrere Open-Source-Technologien kombiniert, um Ingenieurinnen und Ingenieuren dabei zu helfen, Performance und Ressourcennutzung zu verbessern
    • Nach der Einführung wurde eine jährliche Kapazitätseinsparung im Umfang von etwa 15.000 Servern erreicht

Funktionsweise von Strobelight

  • Strobelight ist kein einzelner Profiler, sondern ein Orchestrator, der mehrere Profiler koordiniert
  • Es läuft auf allen Produktions-Hosts von Meta und sammelt die folgenden Performance-Metriken
    • CPU-Auslastung
    • Speicherallokation
    • weitere Performance-Metriken
  • Damit können Ingenieurinnen und Ingenieure Performance-Engpässe und Ressourcenverschwendung identifizieren und den Code optimieren

Rolle und Notwendigkeit von Profilern

  • Profiler sind statistische Analysewerkzeuge auf Sampling-Basis
  • Beispiel: Bei CPU-Cycle-Events lassen sich Funktionsaufruf-Stacks und die Zeit analysieren, in der Funktionen auf der CPU ausgeführt werden
  • Sie ermöglichen ein detailliertes Verständnis des Laufzeitverhaltens von Code und tragen so zur Performance-Verbesserung bei

Die verschiedenen Profiler in Strobelight

  • Strobelight umfasst insgesamt 42 Profiler
    • jemalloc-basierter Speicher-Profiler
    • Profiler für die Anzahl von Funktionsaufrufen
    • ereignisbasierte Profiler für einzelne Sprachen wie Python, Java und Erlang
    • AI/GPU-Profiler
    • Profiler zur Verfolgung von Off-CPU-Zeit
    • Profiler zur Verfolgung der Latenz von Service-Anfragen
  • Die Profiling-Tools können über Kommandozeilen-Tools oder eine Web-UI ausgeführt werden
  • Es lassen sich Continuous Profiling sowie triggerbasiertes Profiling für das Auftreten bestimmter Bedingungen einrichten

Unterstützung für Ad-hoc-Profiler

  • Wenn Ingenieurinnen und Ingenieure neue Profiler hinzufügen wollen, sind normalerweise mehrere Code-Änderungen und Deployments nötig
  • Durch das Schreiben von bpftrace-Skripten können Profiler schnell hinzugefügt werden
  • So lassen sich Performance-Probleme bestimmter Funktionen zügig nachverfolgen und analysieren

Vermeidung von Konflikten zwischen Profilern

  • Strobelight enthält ein eingebautes System zur Vermeidung von Ressourcenkonflikten zwischen Profilern
  • Es gelten Regeln wie etwa, dass während der Verfolgung von CPU-Cycles keine anderen PMU-Counter verwendet werden dürfen
  • Durch gleichzeitige Ausführung und ein Queue-Management-System werden Ressourcenkonflikte minimiert

Automatisches Profiling und dynamisches Sampling

  • Strobelight führt Profiling automatisch für alle Meta-Dienste aus
  • Sampling-Frequenz und -Dauer werden je nach Workload des jeweiligen Dienstes automatisch angepasst
  • Sampling-Wahrscheinlichkeit und Erfassungsfrequenz werden automatisch kalibriert, um konsistente Daten bereitzustellen

Performance-Optimierung und Beispiele für Kapazitätseinsparungen

LBR-Profiler

  • Unterstützt Sampling mit der Intel-Hardwarefunktion Last Branch Record (LBR)
  • Wird in FDO (Feedback Directed Optimization) verwendet, um die Performance von Binärdateien zu verbessern
  • Bei Metas 200 wichtigsten Diensten wurde die CPU-Cycle-Nutzung um bis zu 20 % reduziert

Event-Profiler

  • Bietet ähnliche Funktionen wie das Linux-Tool perf
  • Sampelt und visualisiert Performance-Events wie CPU-Cycles oder L3-Cache-Misses
  • Probleme in Code-Pfaden können frühzeitig erkannt und behoben werden

Stack Schemas und Strobemeta

Stack Schemas

  • Erhöhen die Sichtbarkeit, indem sie Funktionsaufruf-Stacks mit Tags versehen
  • In Filterung und Visualisierung lassen sich unnötige Funktionen ausblenden

Strobemeta

  • Fügt zur Laufzeit dynamische Metadaten zu Aufruf-Stacks hinzu
  • Liefert Detailinformationen zu Service-Endpunkten, Latenzzeiten und mehr

Symbolisierung

  • Wandelt virtuelle Adressen in Binärdateien in Funktionsnamen und Quellcode-Informationen um
  • Basiert auf Open-Source-Technologien wie DWARF, ELF, gsym und blazesym
  • Die Symbolisierung erfolgt nach dem Profiling, um Performance-Einbußen zu vermeiden

Tools zur Visualisierung von Strobelight-Daten

Scuba

  • SQL-basiertes Tool für Abfragen und Visualisierung
  • Bietet für Profiling-Daten Zeitreihen, Verteilungen, Flame Graphs und mehr

Tracery

  • Visualisierungstool für komplexe, zeitbasierte Profiling-Daten
  • Kann Service-Request-Spans, CPU-Cycles und Off-CPU-Daten integriert visualisieren

Der Fall „Biggest Ampersand“

  • Ingenieurinnen und Ingenieure entdeckten mithilfe von Strobelight-Daten ein Kopierproblem bei std::vector
  • & hinter dem Schlüsselwort auto hinzufügen → unnötige Kopien vermeiden
  • Das führte letztlich zu einer Einsparung im Umfang von rund 15.000 Servern pro Jahr

Open Source

1 Kommentare

 
GN⁺ 2025-03-11
Hacker-News-Kommentare
  • Empfiehlt Grafanas Pyroscope für Continuous Profiling, wird in Go eingesetzt und funktioniert gut
    • Unterstützt mehrere Sprachen und basiert auf eBPF
  • Der C++-Code von Meta/FB ist leichter zu lesen als der anderer alter großer Tech-Unternehmen
  • Strobelight ist eine Lebensader, weil es besonders bei Services mit hoher QPS leicht sichtbar macht, wo sich Optimierungen lohnen
  • Metas User-Space-Binärdateien enthalten Frame Pointer, wodurch Stack-Walking möglich wird
    • Andernfalls hätte man komplexe und ineffiziente Methoden verwenden müssen
  • Behauptet, es gebe einen Event-Profiler für nicht native Sprachen (z. B. Python)
    • Es ist nicht klar, wie der Python-Status gelesen wird
  • Das GitHub-Repository von Strobelight ist derzeit noch sehr rudimentär, man fragt sich, wann es Updates geben wird
  • Der Name scheint sich auf ein Stroboskop zu beziehen, mit dem schnelle periodische Bewegungen untersucht werden
  • Wäre schön, wenn das Open-Source-Projekt so integriert wäre
    • Die interne UI von Facebook sieht ganz ordentlich aus
  • Die Modellierung von Rechenkosten ist schwierig
    • Es wäre interessant, Strömungsmechanik auf Rechenanforderungen anzuwenden
  • Denkt, dass die großen Konkurrenten von AWS/Azure/GCP wegen des Mangels an solchen Tools Schwierigkeiten haben
    • Bei Microsoft wurde ein Tool zum Nachverfolgen von Netzwerkverkehr gebaut, das für Debugging sehr nützlich war
    • Begegnet allem von Meta mit Skepsis
  • Es geht um Performance-Profiling
    • Wegen des Titels und der Domain dachte man zuerst, es gehe um Nutzerprofiling
  • Man arbeitet daran, Strobelight über Parca und Polar Signals für alle verfügbar zu machen
    • Ein Teil davon existiert bereits, und dieses Jahr soll noch mehr kommen