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