Add experiment_analysis/README.md
This commit is contained in:
parent
2cf52d8784
commit
35950d9c17
1 changed files with 187 additions and 0 deletions
187
experiment_analysis/README.md
Normal file
187
experiment_analysis/README.md
Normal 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 +30–40 Prozentpunkte
|
||||||
|
- CI(Δ): nicht berechnet (direkte Aggregation)
|
||||||
|
- RR: RR ~1.4–1.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,4 ms).
|
||||||
|
- 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.
|
||||||
Loading…
Reference in a new issue