5.8 KiB
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.