230 lines
7.2 KiB
Markdown
230 lines
7.2 KiB
Markdown
# Frozen-Runs Analyse – Zwischenbericht zu Metriken und Timing-Effekten
|
||
|
||
## Purpose
|
||
|
||
Analyse von Frozen-Runs zur Untersuchung von Timing-Stabilität und Metrikunterschieden zwischen pinned und unpinned CPU-Konfigurationen.
|
||
|
||
**Problemstellung:** Unklarheit über die Stabilität und Wiederholbarkeit von Timing-Metriken bei Frozen-Runs unter verschiedenen CPU-Bindungszuständen (pinned vs. unpinned).
|
||
|
||
**Ziele:**
|
||
- Vergleich der Metriken Mischfenster-Dauer, Retry-free-in-window Rate und seqcount_retry_count zwischen pinned und unpinned Runs
|
||
- Bewertung der metrischen Robustheit mittels Bootstrap-Konfidenzintervallen
|
||
- Identifikation belastbarer Trennmerkmale als Grundlage für spätere CI-Gates
|
||
|
||
## Kontext & Hintergrund
|
||
|
||
Vier N40-Frozen-Runs (#20–#23) mit balanciertem Setup: pinned/unpinned alternierend, keine back-to-back-Ausführungen.
|
||
|
||
**Gruppierung:**
|
||
- pinned_flag
|
||
|
||
**Trace-Metadaten / zusätzliche Tags:**
|
||
- corr_id
|
||
- write_pre
|
||
- write_post
|
||
- clocksource_switch
|
||
|
||
**Domänenkontext:**
|
||
- System Performance Analysis
|
||
- CPU Binding Effects
|
||
- Timing Stability in Benchmark Runs
|
||
|
||
**Outlier-Definition:**
|
||
- Methode: Empirisch über Bootstrap-Stabilität der p95/max-Metriken
|
||
- Beschreibung: Ausreißer sind Runs, deren Metrikbeiträge stark variieren und über die Bootstraps nicht stabil reproduzierbar sind.
|
||
- Metrik: Mischfenster-Dauer (p95, max)
|
||
|
||
**Motivation:**
|
||
- Validierung der Frozen-Runs als stabile Baseline
|
||
- Quantifizierung der Einflüsse von CPU-Pinning auf Timing-Streuung
|
||
- Vorbereitung auf CI-taugliche Gate-Metriken
|
||
|
||
## Methode / Spezifikation
|
||
|
||
**Übersicht:**
|
||
- Balanciertes Frozen-Run-Design mit 2x pinned und 2x unpinned Ausführungen.
|
||
- Sanity-Checks zur Sicherstellung der Datenintegrität vor Analyse.
|
||
- Bootstrap-Resampling über Runs zur Robustheitsbewertung der Effektgrößen.
|
||
|
||
**Algorithmen / Verfahren:**
|
||
- Berechnung von p50, p95 und max der Mischfenster-Dauer pro Run.
|
||
- Berechnung der retry-free-in-window Rate und Korrelation mit seqcount_retry_count.
|
||
- Bootstrap-Resampling (n=10.000) über Runs, gruppiert nach pinned_flag.
|
||
- Berechnung von Effektgrößen (rank-biserial Correlation, Cliff’s delta).
|
||
|
||
### Bootstrap-Übersicht
|
||
|
||
Resampling-Verfahren zur Schätzung von Konfidenzintervallen und Stabilität von Effektgrößen.
|
||
|
||
**Zielgrößen:**
|
||
- p95 Mischfenster-Dauer
|
||
- retry-free-in-window Rate
|
||
- Cliff’s delta pro Metrik
|
||
|
||
### Resampling-Setup
|
||
|
||
- pinned
|
||
- unpinned
|
||
|
||
**Stichprobeneinheit:** Run
|
||
|
||
**Resampling-Schema:**
|
||
- 10.000 Resamples pro Gruppe mit Replacement
|
||
|
||
**Konfidenzintervalle:**
|
||
- Niveau: 0.95
|
||
- Typ: percentile
|
||
- Ableitung: aus den empirischen Bootstrap-Verteilungen
|
||
|
||
### Abgeleitete Effektgrößen
|
||
|
||
**Risk Difference (Differenz der Raten):**
|
||
- Definition: Differenz der retry-free-in-window Raten zwischen pinned und unpinned Runs.
|
||
- Bootstrap: Bootstrapped 95%-Konfidenzintervall über Gruppenmittelwerte.
|
||
|
||
**Risk Ratio:**
|
||
- Definition: Relatives Risiko eines niedrigen retry-free Anteils bei unpinned Runs.
|
||
- Bootstrap: Bootstrap-Schätzung der RR-Verteilung über Run-Resamples.
|
||
|
||
### C-State-Kontrolle
|
||
|
||
**Ziel:** Vermeidung von Störfaktoren durch CPU-Zustandswechsel (C-States).
|
||
|
||
**Vorgehen:**
|
||
- Frozen-Setup ohne Dynamikänderungen von CPUFreq governor.
|
||
- Enge Kontrolle über run sequence und clocksource stability.
|
||
|
||
## Input / Output
|
||
|
||
### Input-Anforderungen
|
||
|
||
**Hardware:**
|
||
- Mehrkernsystem mit identischen Cores
|
||
- CPU-Pinning-Unterstützung im Kernel
|
||
|
||
**Software:**
|
||
- trace-cmd
|
||
- Auswerteskripte mit Bootstrap-Unterstützung
|
||
- Statistik-Tool für Effektgrößen
|
||
|
||
**Konfiguration:**
|
||
- Frozen-Setup aktiv
|
||
- Clocksource switch tracebar
|
||
- Keine parallelen Systemlasten
|
||
|
||
### Erwartete Rohdaten
|
||
|
||
**Felder pro Run:**
|
||
- run_id
|
||
- pinned_flag
|
||
- mischfenster_p50
|
||
- mischfenster_p95
|
||
- mischfenster_max
|
||
- retry_free_rate
|
||
- seqcount_retry_count
|
||
|
||
**Formatbeispiele:**
|
||
- 21, unpinned, 1.2ms, 4.9ms, 7.3ms, 0.94, 12
|
||
|
||
**Trace-Daten:**
|
||
- Format: trace-cmd output mit clocksource_switch-Ereignissen
|
||
- Hinweis: Jeder Trace enthält korrelierte write_pre/write_post-Einträge mit fortlaufenden corr_id-Werten.
|
||
|
||
### Analyse-Ausgaben
|
||
|
||
**Pro Gruppe / pro Governor:**
|
||
- p50
|
||
- p95
|
||
- max
|
||
- bootstrap CI-Bereich
|
||
- Cliff’s delta
|
||
|
||
**Vergleichsausgaben:**
|
||
- pinned vs unpinned
|
||
- Δ: retry-free-in-window Rate differiert um ca. mehrere Prozentpunkte
|
||
- CI(Δ): 95%-CI ohne Überlappung in einigen Runs
|
||
- RR: unpinned > pinned (breitere Tails, höhere Varianz)
|
||
- CI(RR): enge Bandbreite, robuste Trennung beim p95
|
||
|
||
- C-State-Korrelation: nicht signifikant unter frozen setup
|
||
- Trace-Muster: unpinned zeigt breitere Latenzverteilungen im Mischfenster
|
||
|
||
## Workflow / Nutzung
|
||
|
||
**Analyse-Workflow:**
|
||
- Alle Runs erfassen und sanity-check durchführen.
|
||
- Kernmetriken extrahieren und pro Run speichern.
|
||
- Bootstrap-Resampling mit Gruppierung nach pinned_flag ausführen.
|
||
- Effektgrößen und Konfidenzintervalle vergleichen und validieren.
|
||
|
||
### Trace-Template-Anforderungen
|
||
|
||
**Ziel:** Eindeutige Erkennung der clocksource_switch- und write_pre/post-Ereignisse.
|
||
|
||
**Erforderliche Tags & Metadaten:**
|
||
- corr_id
|
||
- run_id
|
||
- pinned_flag
|
||
- timestamp
|
||
|
||
**trace-cmd-Setup:**
|
||
- trace-cmd record -e clocksource:*
|
||
- constantes Tracing-Intervall pro Run
|
||
|
||
**Run-Design für Contributors:**
|
||
- abwechslungsweise pinned/unpinned Läufe
|
||
- keine Back-to-back-Ausführung
|
||
|
||
## Interpretation & erwartete Ergebnisse
|
||
|
||
**Kernbefunde:**
|
||
- unpinned Runs zeigen erhöhte Varianz in p95 und max Mischfenster-Dauer.
|
||
- retry-free-in-window Rate bleibt über Gruppen stabil mit engen CIs.
|
||
- Bootstrap-Schätzungen trennen signifikant auch bei kleinen Run-Zahlen.
|
||
|
||
**Implikationen für Experimente:**
|
||
- p95 ist robustere Metrik als max für künftige CI-Gates.
|
||
- retry-free-in-window eignet sich als ergänzender Stabilitätsindikator.
|
||
|
||
**Planungsziel:**
|
||
- Ziel: Vorbereitung auf CI-basierte Metrik-Gates für Performance-Regression-Checks.
|
||
- Vorgehen:
|
||
- Kombination von Effektgröße und Bootstrap-CI als Entscheidungskriterium
|
||
- Identifikation von stabilen Metriken mit geringer CI-Streuung
|
||
|
||
## Limitationen & Fallstricke
|
||
|
||
**Datenbezogene Limitationen:**
|
||
- Kleine Stichprobenzahl (n=4) limitiert Teststärke.
|
||
- Frozen-Setup kann externe Effekte kaschieren.
|
||
- Keine volle Zeitreproduzierbarkeit bei möglichen Migrationen außerhalb frozen runs.
|
||
|
||
**Bootstrap-spezifische Limitationen:**
|
||
- Bootstrap stabilisiert nur im Rahmen vorhandener Varianz.
|
||
- Run-Korrelationen können zu unterschätzten CIs führen.
|
||
|
||
**Kausalität & Generalisierbarkeit:**
|
||
- Effekte gelten nur für identisches Hardware-Setup.
|
||
- Keine kausale Aussage über CPU-Pinning allgemein.
|
||
|
||
**Praktische Fallstricke:**
|
||
- clocksource_switch Events müssen vollständig geloggt sein.
|
||
- Fehlende corr_id oder write_post können Analyse verzerren.
|
||
|
||
## Nächste Schritte & Erweiterungen
|
||
|
||
**Geplante Experimente:**
|
||
- Zusätzliche 4–6 Runs im strict frozen Setup.
|
||
- Gate-Prototyp zur Bewertung stabiler Metriken.
|
||
|
||
**Analyseziele:**
|
||
- CI-fähiger Vergleich von p95 vs. retry-free-in-window als Leitmetrik.
|
||
- Überprüfung der Bootstrap-Verlässlichkeit bei größeren Samples.
|
||
|
||
**Regression & Modellierung:**
|
||
- Einführung einfacher Gate-Prototypen ohne harte Schwellen.
|
||
- Langfristig Modellierung von Timing-Varianz über pinned vs. unpinned.
|
||
|
||
**Community-Beiträge:**
|
||
- Feedback zu priorisierten Gate-Metriken einholen (p95 vs retry-free).
|
||
- Offene Diskussion über standardisierte Frozen-Benchmarks.
|