powersave_analysis/powersave_logging/README.md

234 lines
6.8 KiB
Markdown
Raw Permalink 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.

# 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