holdover_test/trace_repo_template/README.md

230 lines
6.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trace-Repo-Template und Aggregationsskript für C-State- und Clocksource-Analysen
## Purpose
Dokumentvorlage und Skriptstruktur zur Analyse von CPU-Governor-Einflüssen auf C-State-Residency und Clocksource-Wechsel über lange Testzeiträume.
**Problemstellung:** Unterschiede im CPU-Governor-Verhalten über einen 24hTestzeitraum verursachen OutlierCluster, deren Korrelation mit CState und ClocksourceMetriken reproduzierbar dokumentiert werden soll.
**Ziele:**
- Einheitliche Trace-Struktur für C-State-Analysen
- Automatisierte Aggregation von Clocksource-Wechselereignissen
- Vergleich von Governor-Profilen über gleichartige Runs
## Kontext & Hintergrund
Langzeit-Traces von CPUCStates, ClocksourceWechseln und EMMessungen über 24hRuns unter verschiedenen CPUGovernoren.
**Gruppierung:**
- powersave
- performance
**Trace-Metadaten / zusätzliche Tags:**
- timestamp
- cstate_level
- clocksource_event
- governor_mode
- event_latency
**Domänenkontext:**
- CPU power management
- kernel scheduler behavior
- BPF tracing
- bootstrap analysis
**Outlier-Definition:**
- Methode: Bootstrap-basiertes Resampling und MannWhitneyTest
- Beschreibung: Outlier werden als Messungen außerhalb des 95%-Konfidenzintervalls der Referenzgruppe definiert.
- Metrik: Benchmark-Latenzabweichung pro Lauf
**Motivation:**
- Überprüfung des GovernorEffekts über lange Zeiträume
- Quantifizierung der CStateEinflüsse auf Stabilität
- Ausschluss elektrischer Störeinflüsse
## Methode / Spezifikation
**Übersicht:**
- Vergleich der OutlierRaten zwischen powersave und performance Governors über 24h
- Analyse der C3Residency im 01000msFenster vor Events
- Auswertung von clocksource_switchBPFTraces
**Algorithmen / Verfahren:**
- BootstrapResampling mit 10000 Iterationen, Ermittlung von 95%Konfidenzintervallen
- Differenz von Anteilen (OutlierRaten) zwischen Gruppen
- RisikoquotientSchätzung (risk ratio)
- Nonparametrische Signifikanztests mittels MannWhitneyU
### Bootstrap-Übersicht
Nichtparametrisches Resampling über OutlierMessungen pro GovernorGruppe.
**Zielgrößen:**
- OutlierAnteil
- MedianResidency C3
- clocksource_switchRate
### Resampling-Setup
- powersave
- performance
**Stichprobeneinheit:** Einzelner BenchmarkLauf
**Resampling-Schema:**
- 10000 Iterationen
- Mit Zurücklegen
- Gruppenweise Resamples
**Konfidenzintervalle:**
- Niveau: 0.95
- Typ: Percentilbasiert
- Ableitung: Empirisch aus BootstrapVerteilung
### Abgeleitete Effektgrößen
**Risk Difference (Differenz der Raten):**
- Definition: Differenz der OutlierRaten zwischen Governors.
- Bootstrap: BootstrapVerteilung der Anteilsdifferenz, CI über Percentile.
**Risk Ratio:**
- Definition: Verhältnis der OutlierWahrscheinlichkeiten zwischen powersave und performance.
- Bootstrap: Resampling der Quotenverteilung und CISchätzung über logTransformation.
### C-State-Kontrolle
**Ziel:** Validierung des Einflusses tiefer CStates auf OutlierRate.
**Vorgehen:**
- Zusätzlicher Kontrolllauf mit powersave, C0/C1only
- Vergleich OutlierRate gegenüber performance
- Analyse CStateResidencyReduktion
## Input / Output
### Input-Anforderungen
**Hardware:**
- x86Laptop mit stabiler Stromversorgung
- konstante Umgebungstemperatur
**Software:**
- LinuxKernel mit BPFUnterstützung
- tracecmd
- PythonBootstrapAuswerteskript
**Konfiguration:**
- Governor festgesetzt (powersave oder performance)
- clocksource KernelTrace aktiviert
### Erwartete Rohdaten
**Felder pro Run:**
- timestamp
- latency_ms
- cstate
- clocksource_event_count
- governor
- run_id
**Formatbeispiele:**
- 20241201T06:00:00Z, 2.35ms, C3, 1, powersave, run_01
**Trace-Daten:**
- Format: FTRACE/BPFEvents im Text oder JSONExportformat
- Hinweis: Jede Zeile enthält EventTimestamp und CStateWechselkennung.
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- OutlierRate (%)
- MedianC3Residency (ms)
- clocksource_switchEvents pro Benchmark
**Vergleichsausgaben:**
- powersave vs performance
- Δ: ≈18Prozentpunkte
- CI(Δ): [~12,24]
- RR: ≈4.1
- CI(RR): [~2.0,6.8]
- Tests: ≈0.003
- C-State-Korrelation: ResidencyZunahme in C3 korreliert mit OutlierHäufungen.
- Trace-Muster: CStateExit gefolgt von clocksource_switchEvent innerhalb 20200ms.
## Workflow / Nutzung
**Analyse-Workflow:**
- Traces erfassen mit tracecmd oder BPFProgrammen
- Aggregationsskript aus Template anwenden
- BootstrapAnalyse der OutlierRaten durchführen
- Ergebnisse in GruppenReport konsolidieren
### Trace-Template-Anforderungen
**Ziel:** Standardisierte Aufnahme und Auswertung von CStateResidency und ClocksourceWechseln.
**Erforderliche Tags & Metadaten:**
- governor
- timestamp
- cstate
- clocksource_event
- latency_ms
**trace-cmd-Setup:**
- tracecmd record e power/cpu_idle e clockevents/clock_*
- BPFTracing optional für clocksource_switch aktivieren
**Run-Design für Contributors:**
- Identische HardwareParameter pro Lauf beibehalten
- Getrennte Runs für powersave und performance
- Laufzeit mindestens 24h pro Konfiguration
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- GovernorEffekt bleibt über 24h stabil nachweisbar.
- powersave zeigt erhöhte OutlierRaten und tiefere CStates.
- CStateExits stehen in zeitlicher Nähe zu clocksource_switchEvents.
**Implikationen für Experimente:**
- GovernorWahl beeinflusst zeitliche Stabilität von Benchmarks.
- CStateManagement ist kritischer Faktor bei Latenzanalysen.
**Planungsziel:**
- Ziel: Reduktion der OutlierRate durch gezielte CStateBegrenzung.
- Vorgehen:
- Kontrolllauf mit C0/C1OnlyRegime
- Analyse, ob OutlierRate auf performanceNiveau absinkt
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- LangzeitTest unterliegt Temperatur und Spannungsdrift.
- Spätere Tageszyklen können Einfluss auf SystemThermik haben.
**Bootstrap-spezifische Limitationen:**
- Abhängigkeit der CIs von der Stichprobengröße.
- BootstrapVerteilungen können bei kleinen N verzerrt sein.
**Kausalität & Generalisierbarkeit:**
- Beobachtete Korrelationen nicht zwingend kausal.
- Ergebnisse spezifisch für getestete Hardware/KernelVersion.
**Praktische Fallstricke:**
- Falsche Governorumschaltung während Testlauf verfälscht Ergebnis.
- Nichtsynchronisierte Traces erschweren Zuordnung von Events.
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- Kontrolllauf mit powersave (nur C0/C1 erlaubt).
**Analyseziele:**
- Quantitative Validierung des Einflusses tiefer CStates auf OutlierRaten.
**Regression & Modellierung:**
- Modellierung der OutlierWahrscheinlichkeit als Funktion der CStateResidency.
**Community-Beiträge:**
- TemplateBereitstellung im TraceRepository für ReplikationsExperimente.