Add powersave_logging/README.md
This commit is contained in:
parent
42bab2aa3d
commit
f2d9084ae7
1 changed files with 234 additions and 0 deletions
234
powersave_logging/README.md
Normal file
234
powersave_logging/README.md
Normal 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 24 h zwischen performance und powersave+C0/C1
|
||||||
|
- Spacer-Sweep-Test (0 → 0,5 → 1 mm)
|
||||||
|
- 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
|
||||||
Loading…
Reference in a new issue