Add powersave_logging/README.md

This commit is contained in:
Mika 2025-12-07 16:32:04 +00:00
parent 42bab2aa3d
commit f2d9084ae7

234
powersave_logging/README.md Normal file
View file

@ -0,0 +1,234 @@
# Dokumentation des Powersave- und C-State-Loggings
## Purpose
Dokumentation der Erfassung und Auswertung von Powersave-Zuständen (C-States) zur Beurteilung des Governor-Effekts und dessen Abhängigkeit von C3-Residency.
**Problemstellung:** Unklar war, ob der Governor-bedingte Jitter aus elektrischen Störungen stammt oder durch Aktivität in tiefen CPU-Schlafzuständen (C3) vermittelt wird. Ziel war, über Logging und Aggregation der C-State-Daten diesen Zusammenhang nachzuweisen.
**Ziele:**
- Präzise Logging- und Analysebasis für C-State-bezogene Outlier-Erkennung schaffen
- Differenzierung von Effekten zwischen normalem und limitiertem Powersave-Modus ermöglichen
- Reproduzierbare CSV-Exporte mit allen relevanten Trace-Feldern bereitstellen
## Kontext & Hintergrund
120 Micro-Benchmarks pro Modus (normaler powersave vs. powersave mit C3-Sperre).
**Gruppierung:**
- normal
- restricted
**Trace-Metadaten / zusätzliche Tags:**
- C-State-Residency
- clocksource_switch Events
- Outlier-Flag
- EM-Probe-Daten
**Domänenkontext:**
- CPU-Governor-Analyse
- C-State-Transition-Logging
- BPF-Trace-Datenerhebung
- Energiemanagementmessungen
**Outlier-Definition:**
- Methode: Benchmarkabweichung
- Beschreibung: Runs mit signifikant erhöhter Latenz oder Variabilität gegenüber dem Median
- Metrik: Outlier-Rate pro Modus in Prozent
**Motivation:**
- Aufklärung des Zusammenhangs zwischen Governor-Verhalten und C3-Eintritt
- Eliminierung nicht-elektrischer Einflüsse durch kontrolliertes Power-State-Limit
## Methode / Spezifikation
**Übersicht:**
- Vergleich zweier Powersave-Konfigurationen mit identischer Benchmark-Last.
- Erfassung von C-State-Residencies, clocksource_switch-Ereignissen und EM-Traces.
- Bootstrap-Auswertung zur Bestimmung der Vertrauensintervalle und Signifikanz.
**Algorithmen / Verfahren:**
- pro Modus 120 Benchmarks sammeln
- C-State-Residency summieren und Outlier markieren
- Bootstrap-Resampling mit 10.000 Iterationen, 95%-Konfidenzintervall
- Berechnung der Differenz in Outlier-Proportionen und Risk Ratio
### Bootstrap-Übersicht
Non-parametrisches Resampling zur Abschätzung der Schwankung der Outlier-Rate.
**Zielgrößen:**
- Differenz der Outlier-Anteile
- Risk Ratio zwischen Modi
### Resampling-Setup
- normal
- restricted
**Stichprobeneinheit:** Benchmark-Run
**Resampling-Schema:**
- 10000-faches Resampling pro Modus
**Konfidenzintervalle:**
- Niveau: 0.95
- Typ: percentile
- Ableitung: durch Bootstrap-Verteilung
### Abgeleitete Effektgrößen
**Risk Difference (Differenz der Raten):**
- Definition: Prozentuale Differenz der Outlier-Raten zwischen beiden Modi.
- Bootstrap: Zur Abschätzung der Unsicherheit des Effekts.
**Risk Ratio:**
- Definition: Verhältnis der Outlier-Wahrscheinlichkeit im normalen gegenüber restringiertem Modus.
- Bootstrap: 95%-CI aus Bootstrap-Sampling.
### C-State-Kontrolle
**Ziel:** Einfluss tiefer C-States auf den Governor-Effekt prüfen.
**Vorgehen:**
- C3-Zugriff über Kernelparameter intel_idle.max_cstate=1 einschränken
- Residency-Verteilungen vergleichen
- Auswirkung auf clocksource_switch-Frequenz beobachten
## Input / Output
### Input-Anforderungen
**Hardware:**
- Intel-basierte CPU mit Idle-States bis C3
- EM-Probe
- Referenz-Benchmark-Rig
**Software:**
- Linux-Kernel mit BPF-Support
- trace_agg.py
- Shell-/Python-Umgebung
**Konfiguration:**
- intel_idle.max_cstate=1 oder höher
- aktive BPF-Traces auf clocksource_switch
### Erwartete Rohdaten
**Felder pro Run:**
- run_id
- mode
- outlier_flag
- c0_time
- c1_time
- c3_time
- clocksource_switch_count
- em_trace_sum
**Formatbeispiele:**
- normal,42,False,81.2,15.4,3.4,15,0.98
**Trace-Daten:**
- Format: CSV aus trace_agg.py
- Hinweis: Spaltenbezeichner müssen exakt dem im Repository definierten Schema folgen
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- C3-Residency-Mittelwert
- Outlier-Anteil
- CI-Grenzen
**Vergleichsausgaben:**
- normal vs restricted
- Δ: -18.3%
- CI(Δ): [3.1, 11.8]
- RR: ≈3.7
- CI(RR): [2.0, 8.4]
- Tests: ≈0.002
- C-State-Korrelation: starke positive Korrelation zwischen hoher C3-Residency und Outlier-Häufigkeit
- Trace-Muster: clocksource_switch-Events korrelieren mit Outlier-Phasen
## Workflow / Nutzung
**Analyse-Workflow:**
- Benchmarks ausführen unter normalem und limitiertem Powersave
- Traces erfassen (BPF, EM, C-State)
- trace_agg.py zur Aggregation verwenden
- Bootstrap-Analyse der Resultate ausführen
- Vergleich der Resultate dokumentieren
### Trace-Template-Anforderungen
**Ziel:** Standardisierte Traces für Replikation und Vergleich ermöglichen.
**Erforderliche Tags & Metadaten:**
- mode
- run_id
- c_state_times
- outlier_flag
- clocksource_switch_count
**trace-cmd-Setup:**
- bpftrace -e 'tracepoint:power:cpu_idle { ... }'
- Aufzeichnungszeit synchronisieren
**Run-Design für Contributors:**
- mindestens 100 Testläufe pro Konfiguration
- identische Benchmark-Workload verwenden
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- Outlier-Rate sinkt drastisch, sobald C3 gesperrt ist.
- C3-Residency korreliert mit Jitter-Ausreißern.
- clocksource_switch-Events treten im eingeschränkten Modus kaum auf.
**Implikationen für Experimente:**
- Governor-Verhalten stark durch tiefe Idle-States beeinflusst.
- Reproduktion ohne elektrische Einflussfaktoren möglich.
- C-State-Begrenzung als Kontrollvariable für Governor-Vergleiche geeignet.
**Planungsziel:**
- Ziel: Nachweis des CPU-internen Ursprungs des Governor-Effekts.
- Vorgehen:
- systematische Sperrung von C3
- Erhebung und Aggregation aller Trace-Daten mit trace_agg.py
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- Outlier-Definition abhängig von Benchmark-Charakteristik
- BPF-Trace-Zeitauflösung begrenzend für feine Latenzen
**Bootstrap-spezifische Limitationen:**
- Annahmen zu Unabhängigkeit zwischen Runs erforderlich
- geringe Stichprobenzahlen können CI verbreitern
**Kausalität & Generalisierbarkeit:**
- Ergebnisse primär für Intel Idle-Governor gültig
- Übertragbarkeit auf ARM- oder AMD-Plattformen unbestätigt
**Praktische Fallstricke:**
- unkonsistente Trace-Formate verhindern Aggregation
- fehlende Metadata (Spacer, Hardware) limitieren Vergleichbarkeit
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- Langzeitvergleich über 24h zwischen performance und powersave+C0/C1
- Spacer-Sweep-Test (00,51mm)
- Unit-Test-Integration für trace_agg.py
**Analyseziele:**
- Validierung der Stabilität des Governor-Clocksource-Offsets
- Quantifizierung der Outlier-Stabilität über Zeit
**Regression & Modellierung:**
- Modellierung der C-State-Auswirkungen auf Latenzverteilung
- Vorbereitung linearer Mixed-Effects-Modelle für Governor-Zustände
**Community-Beiträge:**
- Einreichen von Remote-Traces unter intel_idle.max_cstate=1
- Bereitstellung von Hardware- und Spacer-Metadaten zur Meta-Analyse