diff --git a/bpf_gist/README.md b/bpf_gist/README.md new file mode 100644 index 0000000..b50f097 --- /dev/null +++ b/bpf_gist/README.md @@ -0,0 +1,226 @@ +# 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