187 lines
5.8 KiB
Markdown
187 lines
5.8 KiB
Markdown
# 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.
|