Add experiment_analysis/README.md

This commit is contained in:
Mika 2026-01-17 17:01:59 +00:00
parent 2cf52d8784
commit 35950d9c17

View file

@ -0,0 +1,187 @@
# Analyse: Einfluss von 'Pinned' vs. 'Unpinned' CPU-Zuweisung auf Mischfenster und Step-Reihenfolge
## Purpose
Vergleichsanalyse zwischen pinned und unpinned A/B-Test-Varianten zur Bewertung der Mischfenster-Dauer und Stabilität der Step-Reihenfolge in VM-Umgebungen.
**Problemstellung:** Nicht deterministische Step-Ausführungsreihenfolgen und verlängerte Mischfenster unter unpinned CPU-Zuweisung erschweren die Konsistenzbewertung in A/B-Testläufen.
**Ziele:**
- Ermitteln, wie CPU-Pinning die Mischfenster-Dauer beeinflusst.
- Quantifizieren der Stabilität der Step-Sequenz bei identischen Setup-Bedingungen.
## Kontext & Hintergrund
Pro Fall jeweils 10 Runs pinned und 10 Runs unpinned; identische Kernel-, VM- und Parser-Settings; Metriken pro corr_id aggregiert.
**Gruppierung:**
- Case_03
- Case_04
**Trace-Metadaten / zusätzliche Tags:**
- corr_id
- Mischfenster-Dauer pro Zone
- Step-Order-Sequenzen
- read_between_steps
**Domänenkontext:**
- VM-basierte Performanceanalysen
- A/B-Testauswertung technischer Scheduler-Artefakte
**Outlier-Definition:**
- Methode: Empirisch per p95/max-Grenze bestimmt
- Beschreibung: Mischfenster oberhalb des p95 werden als Ausreißer betrachtet.
- Metrik: Mischfenster-Dauer in Millisekunden
**Motivation:**
- Ermittlung des Pinning-Einflusses auf deterministische Verarbeitung.
- Identifikation von Scheduling-bedingten Verzerrungen.
- Abgrenzung von Publish-Order- und Preemption-Effekten.
## Methode / Spezifikation
**Übersicht:**
- Vergleichende Auswertung zweier Konfigurationen (pinned, unpinned) bei identischen Testbedingungen.
- Messung der Mischfensterkennzahlen (p50, p95, max) sowie des step-order-stability-Scores.
**Algorithmen / Verfahren:**
- Parser aggregiert Werte pro corr_id.
- Berechnung von p50, p95 und max der Mischfenster-Dauer je Zone.
- step-order-stability-Score = Anteil Runs mit identischer Step-Sequenz.
### Bootstrap-Übersicht
Kein Resampling-Verfahren eingesetzt, direkte Aggregation von Stichproben.
**Zielgrößen:**
- Mischfenster-Dauer
- Step-Order-Stabilität
### C-State-Kontrolle
**Ziel:** Minimierung von Laufzeitvarianz durch CPU-Pinning.
**Vorgehen:**
- Pinning von VMs auf dedizierte vCPUs.
- Vergleich mit unpinned Ausführungen ohne Affinitätsbindung.
## Input / Output
### Input-Anforderungen
**Hardware:**
- Virtuelle Maschinen mit CPU-Affinitätssteuerung
**Software:**
- Trace-Parser
- Python-Skript trace_agg.py
**Konfiguration:**
- Konstante Kernel-/VM-Parameter
- Aktives Pinning via vCPU Affinity oder isolcpus
### Erwartete Rohdaten
**Felder pro Run:**
- corr_id
- Zone-ID
- p50/p95/max Mischfenster
- step_order_sequence
- read_between_steps
**Formatbeispiele:**
- {"corr_id": "abc123", "mischfenster_ms": {"p95": 1.6, "max": 3.1}, "step_order_stability": 0.68}
**Trace-Daten:**
- Format: kompaktes JSON pro Run
- Hinweis: Generiert durch trace_agg.py, standardisierte Felder pro Zone und Run.
### Analyse-Ausgaben
**Pro Gruppe / pro Governor:**
- p50/p95/max Mischfenster je Zone
- step-order-stability
**Vergleichsausgaben:**
- unpinned vs pinned
- Δ: step-order-stability +3040 Prozentpunkte
- CI(Δ): nicht berechnet (direkte Aggregation)
- RR: RR ~1.41.6 in Richtung höherer Stabilität bei pinned
- C-State-Korrelation: Hoher Zusammenhang zwischen CPU-Migration und Mischfenster-Ausweitung.
- Trace-Muster: Stabile Sequenzen unter pinned; unpinned zeigt variierende Step-Reihenfolgen und breitere Mischzonen.
## Workflow / Nutzung
**Analyse-Workflow:**
- Runs in VM ausführen mit wechselndem Pinning-Schalter.
- Traces per corr_id sammeln.
- trace_agg.py ausführen zur JSON-Summary-Erzeugung.
- Aggregationsvergleich zwischen pinned und unpinned.
### Trace-Template-Anforderungen
**Ziel:** Vergleichbare trace-Ereignisse aus identischen Step-Triggern.
**Erforderliche Tags & Metadaten:**
- corr_id
- step_name
- timestamp_ns
- zone_id
**trace-cmd-Setup:**
- Verwendung identischer Tracepoints pro Run.
- Keine Änderungen an Parser-Version oder Triggerdefinition.
**Run-Design für Contributors:**
- 10 pinned + 10 unpinned Runs pro Case.
- VMs mit kontrollierter CPU-Zuweisung ausführen.
## Interpretation & erwartete Ergebnisse
**Kernbefunde:**
- Pinned reduziert p95-Mischfenster signifikant (1,6→0,4ms).
- Pinned erhöht step-order-stability von ~65% auf bis zu 100%.
- Migration und Preemption verstärken Mischfenster in unpinned Szenarien.
**Implikationen für Experimente:**
- CPU-Affinität ist kritischer Faktor für zeitnahe Step-Verarbeitung.
- Unpinned Konfigurationen erzeugen Scheinvariabilität in Publikations-Timings.
**Planungsziel:**
- Ziel: Trennung der Effekte von Publish-Order und seqcount-Retry.
- Vorgehen:
- Gezieltes Hooking um Write-Operationen.
- Messung der Reihenfolge und Retry-Zyklen unter kontrollierter Pinning-Variante.
## Limitationen & Fallstricke
**Datenbezogene Limitationen:**
- Begrenzte Run-Anzahl pro Case.
- Keine vollständige Randomisierung innerhalb der VM-Platzierung.
**Bootstrap-spezifische Limitationen:**
- Keine Resampling-basierten Unsicherheitsintervalle.
**Kausalität & Generalisierbarkeit:**
- Ergebnisse nur für getestete Kernel-/VM-Versionen gültig.
- Nicht direkt auf physische Maschinen übertragbar.
**Praktische Fallstricke:**
- Falsches Pinning-Setup führt zu irreführender Stabilität.
- VM-interne Scheduler können residuale Migrationen erzwingen.
## Nächste Schritte & Erweiterungen
**Geplante Experimente:**
- Hooking der Write-Operationen zur sauberen Trennung von Publish-Order und Retry-Pfaden.
**Analyseziele:**
- Messung der Latenzen innerhalb der Publikationssequenz.
- Einführung alternativer Stabilitätsmetriken (z.B. Edit-Distance).
**Regression & Modellierung:**
- Erweiterung um lineare Modelle zur Quantifizierung des Pinning-Effekts über verschiedene Zonen.
**Community-Beiträge:**
- Feedback zu alternativen Pinning-Strategien (vCPU-Affinity, isolcpus, cgroup-cpuset) erwünscht.