6.7 KiB
BPF-Tracing vs. kprobes – Auswirkungen auf baseline_recalc-Reihenfolge und Latenz
Purpose
Analyse des Einflusses von BPF-basiertem Tracing gegenüber kprobes auf Latenzstreuung und Wirksamkeit verschiedener baseline_recalc-Patch-Reihenfolgen.
Problemstellung: Die Messungen sollten klären, ob BPF-gestütztes Tracing die Latenz beeinflusst oder den Verarbeitungspfad von baseline_recalc stört.
Ziele:
- Vergleich der Latenzcharakteristik zwischen BPF- und kprobes-Tracing
- Bewertung des Effekts der baseline_recalc-Patch-Reihenfolge auf Millisekunden-Jitter
- Bestimmung der Korrelation zwischen Clocksource-Events und baseline_recalc
Kontext & Hintergrund
Zwei Messreihen (BPF vs. kprobes) mit je N=200–300 Läufen, in QEMU/KVM sowie lokal ausgeführt.
Gruppierung:
- BPF-Tracing
- kprobes-Tracing
Trace-Metadaten / zusätzliche Tags:
- clocksource-switch entry/exit
- clocksource-read()
- userland Handshake-Punkte
Domänenkontext:
- Performance-Analyse unter Linux
- Kernel-Tracing
- clocksource-Mechanismen
- baseline_recalc Funktion
Outlier-Definition:
- Methode: Bootstrap-Analyse mit Cross-Korrelation
- Beschreibung: Abweichungen >2σ innerhalb der Latenzverteilungen wurden geprüft.
- Metrik: Latenz in Millisekunden
Motivation:
- Reduktion von Latenzjitter im Kernel-Tracing-Pfad
- Überprüfung des baseline_recalc-Zeitpunkts zur Minimierung von Timing-Divergenzen
Methode / Spezifikation
Übersicht:
- Vergleich zweier Tracing-Implementierungen (BPF, kprobes) unter identischen Bedingungen
- Erfassung hochauflösender Kernel-Timestamps per BPF-Probe an clocksource-switch und -read
- Bootstrap-basiertes Aggregat zur Schätzung von Konfidenzintervallen und Ausreißerverhalten
Algorithmen / Verfahren:
- Einfügen von BPF-Probes in Kernel-Eventpunkte
- Mapping der Timestamp-Sequenzen auf clockevent-Traces
- Bootstrap (N=10.000 Resamples) zur Stabilisierung von CI-Schätzungen der Differenzen
Bootstrap-Übersicht
Wiederholtes Resampling von Beobachtungen zur Schätzung von Stabilität und Variation der ermittelten Differenzen.
Zielgrößen:
- Median-Latenz
- Latenzstreuung
- Zeitoffset zwischen Events
Resampling-Setup
- BPF
- kprobes
Stichprobeneinheit: einzelner Messlauf (Latenzzeitserie)
Resampling-Schema:
- Stratifizierte Bootstrap-Stichproben pro Tracing-Verfahren
Konfidenzintervalle:
- Niveau: 0.95
- Typ: percentile bootstrap
- Ableitung: aus den Resample-Verteilungen der Latenzunterschiede
Abgeleitete Effektgrößen
Risk Difference (Differenz der Raten):
- Definition: Differenz der relativen Anteile von Latenzüber- und -unterschreitungen zwischen Verfahren.
- Bootstrap: aus Resample-Verteilungen der jeweiligen Verteilungen berechnet
Risk Ratio:
- Definition: Verhältnis der Wahrscheinlichkeit erhöhter Latenzen zwischen BPF und kprobes.
- Bootstrap: Schätzung über Log-Resampling der relativen Risikowerte mit CI
C-State-Kontrolle
Ziel: Isolierung des Einflusses von CPU-C-States auf Latenz und Messgenauigkeit.
Vorgehen:
- intel_idle.maxcstate=1 setzen
- VM-Power-Management deaktivieren
- Vergleich beider Zustände (mit/ohne fixierte C-States)
Input / Output
Input-Anforderungen
Hardware:
- x86_64 CPU mit BPF-Unterstützung
- QEMU/KVM Umgebung
Software:
- Linux Kernel ≥5.15
- BPF Compiler Collection (bcc)
- bpftrace oder libbpf/clang
Konfiguration:
- root-Zugriff zur Probe-Installation
- Deaktiviertes Power Management optional
Erwartete Rohdaten
Felder pro Run:
- timestamp_ns
- event_type
- clocksource
- latency_ms
- trace_id
Formatbeispiele:
- 1727894000100000 clocksource_switch_entry tsc 0.0016 trace57
Trace-Daten:
- Format: CSV oder JSON-Lines mit Zeitstempeln und Event-Typen
- Hinweis: Cross-correlation zwischen BPF-Eventsequenzen und clockevents erforderlich
Analyse-Ausgaben
Pro Gruppe / pro Governor:
- Median-Latenz (ms)
- Standardabweichung (ms)
- Bootstrap-CI
Vergleichsausgaben:
-
BPF vs kprobes
- Δ: -1.7 ms
- CI(Δ): [−1.5, −1.9] ms
- RR: 0.92
- CI(RR): [0.90, 0.95]
- Tests: optional: p≈0.04
-
C-State-Korrelation: geplante Korrelation von Latenzabweichung zu CPU-C-States
-
Trace-Muster: Identifikation der 1.111-s-Offset-Lücke zwischen switch_exit und clocksource_read
Workflow / Nutzung
Analyse-Workflow:
- Setup der Probes
- Durchführung von Laufserien (N>200)
- Sammeln und Aggregieren der Traces
- Bootstrap-Analyse und Latenzvergleich
- Interpretation der Offset- und Streuungsunterschiede
Trace-Template-Anforderungen
Ziel: Erzeugen reproduzierbarer BPF-Trace-Daten zur Latenzanalyse.
Erforderliche Tags & Metadaten:
- timestamp_ns
- event_type
- trace_id
- cpu_id
- clocksource
trace-cmd-Setup:
- bpftrace -e 'tracepoint:clock:* { @[probe] = count(); }'
- bcc-Script zur Erfassung von entry/exit-Timestamps
Run-Design für Contributors:
- je 100+ Läufe pro Tracing-Variante
- VM und Host-Traces separat erfassen
- Bootstrap-Summaries (CI, Medianwerte) pushen
Interpretation & erwartete Ergebnisse
Kernbefunde:
- BPF-Tracing reduziert Latenzstreuung gegenüber kprobes um ca. 1,7 ms.
- Reihenfolge der baseline_recalc-Patches beeinflusst Jitter, nicht jedoch Makrozeitverhalten.
- Konstanter Offset von ≈1,111 s unabhängig vom Tracing-Verfahren.
Implikationen für Experimente:
- Baseline_recalc ist nicht die Hauptursache des 1.111-s-Versatzes.
- BPF kann in Folgemessungen präferiert werden für stabilere Ergebnisse.
Planungsziel:
- Ziel: Verengung des offenen Race-Fensters im Kernel-Timing.
- Vorgehen:
- Instrumentierung innerhalb von do_clocksource_switch
- Fixierung der CPU-Stromsparzustände
- Abschalten des VM-Power-Managements
Limitationen & Fallstricke
Datenbezogene Limitationen:
- Geringe Laufanzahl in lokalen Tests (N=200)
- Messungen abhängig von CPU-Taktung
Bootstrap-spezifische Limitationen:
- Bootstrap führt bei stark korrelierten Daten zu unterschätzten CIs
Kausalität & Generalisierbarkeit:
- Ergebnisse auf getestete Kernel-Version beschränkt
- VM-Artefakte können Realhardware-Effekte überdecken
Praktische Fallstricke:
- C-State-Kontrolle erfordert Kernel-Parameter
- BPF-Probes benötigen Rootrechte
Nächste Schritte & Erweiterungen
Geplante Experimente:
- Direkte Instrumentierung von do_clocksource_switch intern
- Power-Management-Vergleich mit fixierten C-States
Analyseziele:
- Quantifizierung der Latenzänderung bei deaktivierten Energiesparmechanismen
Regression & Modellierung:
- Modellierung der Latenzverteilung unter BPF vs. kprobes mit Generalized Linear Model
Community-Beiträge:
- Bereitstellung des BPF-Gists für Kernel/Messcommunity
- Einreichung der Bootstrap-Summaries als CI-Artefakte