powersave_analysis/powersave_logging/README.md

6.8 KiB
Raw Blame History

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