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