Add ci_pipeline/README.md
This commit is contained in:
parent
583f0c496d
commit
5a8b776ec7
1 changed files with 230 additions and 0 deletions
230
ci_pipeline/README.md
Normal file
230
ci_pipeline/README.md
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
# Mini-CI Probelauf mit stratified sampling, Runner-Split und Bootstrap-Checks
|
||||
|
||||
## Purpose
|
||||
|
||||
Technische Dokumentation des Mini-CI-Probelaufs zur Validierung von Bootstrap-Konsistenz und Laufzeitstabilität im Vergleich zu einem Single-Runner-Ansatz.
|
||||
|
||||
**Problemstellung:** Vor dem Full-Run sollte überprüft werden, ob das geplante CI-Design mit stratified sampling und getrennten Runnern zuverlässig reproduzierbare Bootstrap-Ergebnisse liefert.
|
||||
|
||||
**Ziele:**
|
||||
- Nachweis der Stabilität von Bootstrap-Konfidenzintervallen bei unterschiedlichen CPU-State-Konfigurationen
|
||||
- Evaluation des Runner-Splits (capture, aggregator, bootstrap)
|
||||
- Konfiguration eines skalierbaren Mini-CI-Designs für experimentelle Performance-Analysen
|
||||
|
||||
## Kontext & Hintergrund
|
||||
|
||||
Jedes CI-Job-Run enthält Traces und Outlier-Raten, getrennt nach CPU-State-Profilen ('powersave' und 'performance').
|
||||
|
||||
**Gruppierung:**
|
||||
- CPU-State-Gruppe
|
||||
- Runner-Typ
|
||||
- CI-Job
|
||||
|
||||
**Trace-Metadaten / zusätzliche Tags:**
|
||||
- C-State-Tags
|
||||
- Zeilenendungsformat
|
||||
- Trace-Aggregator-Ausgabe
|
||||
|
||||
**Domänenkontext:**
|
||||
- Continuous Integration
|
||||
- Performance Tracing
|
||||
- Bootstrap-Statistik
|
||||
- System Benchmarks
|
||||
|
||||
**Outlier-Definition:**
|
||||
- Methode: Bootstrap-Schätzung je Gruppe
|
||||
- Beschreibung: Outlier-Rate basierend auf Job-Zeitverteilung pro CPU-State.
|
||||
- Metrik: Prozentuale Abweichung der Outlier-Rate (pp)
|
||||
|
||||
**Motivation:**
|
||||
- Reduktion der Streuung bei Bootstrap-Ergebnissen
|
||||
- Getrennte Steuerung und Resampling zur Reduktion von Laufzeitvariabilität
|
||||
- Validierung der CI-Tauglichkeit für lange Bootstrap-Läufe
|
||||
|
||||
## Methode / Spezifikation
|
||||
|
||||
**Übersicht:**
|
||||
- 10 Replikate je Run mit N≈240 pro Job
|
||||
- Stratifizierung in 'powersave' und 'performance'
|
||||
- Parallele Capture-Runner, zentraler Aggregator, separater Bootstrap-Runner
|
||||
|
||||
**Algorithmen / Verfahren:**
|
||||
- Stratifiziertes Sampling nach CPU-State
|
||||
- Aggregation und Normalisierung der Traces
|
||||
- Bootstrap-Resampling mit 1000 Wiederholungen pro Probe
|
||||
|
||||
### Bootstrap-Übersicht
|
||||
|
||||
Nichtparametrisches Resampling zur Schätzung stabiler Konfidenzintervalle der Outlier-Rate.
|
||||
|
||||
**Zielgrößen:**
|
||||
- Outlier-Rate
|
||||
- Intervallbreite
|
||||
- Risikoquotient
|
||||
|
||||
### Resampling-Setup
|
||||
|
||||
- 'powersave'
|
||||
- 'performance'
|
||||
|
||||
**Stichprobeneinheit:** einzelner CI-Job-Run
|
||||
|
||||
**Resampling-Schema:**
|
||||
- 1000 Bootstrap-Resamples je Gruppe
|
||||
|
||||
**Konfidenzintervalle:**
|
||||
- Niveau: 0.95
|
||||
- Typ: percentile CI
|
||||
- Ableitung: empirisch aus Resampling-Verteilung
|
||||
|
||||
### Abgeleitete Effektgrößen
|
||||
|
||||
**Risk Difference (Differenz der Raten):**
|
||||
- Definition: Differenz der Outlier-Raten zwischen CPU-State-Gruppen in Prozentpunkten.
|
||||
- Bootstrap: Schätzung des CI der Differenz via Bootstrap der Gruppenmittelwerte.
|
||||
|
||||
**Risk Ratio:**
|
||||
- Definition: Quotient der Outlier-Raten zwischen 'performance' und 'powersave'.
|
||||
- Bootstrap: Verteilung des Quotienten aus resampleten Gruppenraten.
|
||||
|
||||
### C-State-Kontrolle
|
||||
|
||||
**Ziel:** Sicherstellung konsistenter Zuordnung von Traces zu CPU-State-Labels.
|
||||
|
||||
**Vorgehen:**
|
||||
- Normalisierung der C-State-Tags im Aggregator
|
||||
- Zeilenendungs-Normalisierung zur Vermeidung von Trace_Mismatch
|
||||
|
||||
## Input / Output
|
||||
|
||||
### Input-Anforderungen
|
||||
|
||||
**Hardware:**
|
||||
- CI-Runner mit CPU-State-Steuerung
|
||||
- Oszilloskoptracing-fähige Umgebung
|
||||
|
||||
**Software:**
|
||||
- CI-System (GitLab CI oder GitHub Actions)
|
||||
- Python/R Statistikbibliothek
|
||||
- Trace-Aggregator
|
||||
|
||||
**Konfiguration:**
|
||||
- stratified_sample_size=240
|
||||
- capture_parallel=4
|
||||
- aggregator_mode=singleton
|
||||
- bootstrap_runs=1000 (Quick-Check) / 10000 (Full-Run)
|
||||
- job_timeouts=900s pro Run
|
||||
|
||||
### Erwartete Rohdaten
|
||||
|
||||
**Felder pro Run:**
|
||||
- job_id
|
||||
- cpu_state
|
||||
- runtime_s
|
||||
- outlier_flag
|
||||
- trace_path
|
||||
|
||||
**Formatbeispiele:**
|
||||
- {'job_id': 1, 'cpu_state': 'powersave', 'runtime_s': 814, 'outlier_flag': false}
|
||||
|
||||
**Trace-Daten:**
|
||||
- Format: JSON/CSV mit Zeit- und State-Feldern
|
||||
- Hinweis: Zeilenenden müssen normalisiert sein.
|
||||
|
||||
### Analyse-Ausgaben
|
||||
|
||||
**Pro Gruppe / pro Governor:**
|
||||
- mean_runtime
|
||||
- outlier_rate
|
||||
- ci_width_pp
|
||||
|
||||
**Vergleichsausgaben:**
|
||||
- powersave vs performance
|
||||
- Δ: 1.1
|
||||
- CI(Δ): [0.7;1.5]
|
||||
- RR: 0.97
|
||||
- CI(RR): [0.93;1.02]
|
||||
|
||||
- C-State-Korrelation: Pearson-Korrelation zwischen Outlier-Rate und C-State-Verteilung pro Runner
|
||||
- Trace-Muster: Erkennung von systematischen Trace-Mismatches nach Normalisierung 0%
|
||||
|
||||
## Workflow / Nutzung
|
||||
|
||||
**Analyse-Workflow:**
|
||||
- Trigger eines Mini-CI-Runs mit definierten Stratified-Jobs
|
||||
- Paralleles Capture der Traces (4 Runner)
|
||||
- Zentrale Aggregation und Normalisierung
|
||||
- Bootstrap-Resampling und CI-Auswertung
|
||||
- Vergleich mit vorherigen Runs (Single-Runner-Referenz)
|
||||
|
||||
### Trace-Template-Anforderungen
|
||||
|
||||
**Ziel:** Reproduzierbare Traces mit eindeutigen CPU-State-Tags
|
||||
|
||||
**Erforderliche Tags & Metadaten:**
|
||||
- cpu_state
|
||||
- timestamp
|
||||
- runner_type
|
||||
- trace_source
|
||||
|
||||
**trace-cmd-Setup:**
|
||||
- --normalize-line-endings
|
||||
- --tag-cstate
|
||||
- --runner-label=<capture|aggregator|bootstrap>
|
||||
|
||||
**Run-Design für Contributors:**
|
||||
- je 10 Replikate pro State-Klasse
|
||||
- N=240 pro Gruppe
|
||||
- Runner-Labels nach Typ zuweisen
|
||||
|
||||
## Interpretation & erwartete Ergebnisse
|
||||
|
||||
**Kernbefunde:**
|
||||
- Stratifiziertes Mini-CI-Design bietet stabile Bootstrap-CIs (Breite ≈1.1pp)
|
||||
- Runner-Split reduziert Streuung signifikant gegenüber Single-Runner-Setup
|
||||
- Bottleneck liegt im Aggregator und Bootstrapping, nicht im Tracing selbst
|
||||
|
||||
**Implikationen für Experimente:**
|
||||
- Runner-Trennung ist für Langzeit-Bootstrap-Läufe sinnvoll
|
||||
- Job-Design mit N≈240 ist statistisch hinreichend und ressourcenschonend
|
||||
|
||||
**Planungsziel:**
|
||||
- Ziel: Planung eines Full-Runs über 24h
|
||||
- Vorgehen:
|
||||
- Erhöhung der Bootstrap-Wiederholungen auf 10k
|
||||
- Überwachung der Drift (1PPS) im Selftest
|
||||
|
||||
## Limitationen & Fallstricke
|
||||
|
||||
**Datenbezogene Limitationen:**
|
||||
- Empfindlich gegenüber falscher CPU-State-Zuordnung
|
||||
- Trace-Mismatch kann CI-Breite verfälschen
|
||||
|
||||
**Bootstrap-spezifische Limitationen:**
|
||||
- Bei niedriger N kann die CI-Schätzung instabil werden
|
||||
- Starker Einfluss von Gruppenungleichgewicht auf Risk-Ratio
|
||||
|
||||
**Kausalität & Generalisierbarkeit:**
|
||||
- Ergebnisse beschränken sich auf Mini-CI-Setups mit ähnlichem Runner-Layout
|
||||
- Keine Übertragbarkeit auf heterogene Multi-Host-Szenarien
|
||||
|
||||
**Praktische Fallstricke:**
|
||||
- 6h-Job-Limits erfordern robustes Artifact-Handling
|
||||
- Langlaufende CI-Systeme sind abhängig von zuverlässigen Runnern und Storage
|
||||
|
||||
## Nächste Schritte & Erweiterungen
|
||||
|
||||
**Geplante Experimente:**
|
||||
- Full-Run mit 10k Bootstrap-Resamples über 24h auf dediziertem Runner-Pool
|
||||
- Drift-Vergleich mittels 1PPS-Selbsttest
|
||||
|
||||
**Analyseziele:**
|
||||
- Untersuchung der Stabilität über Langzeitintervalle
|
||||
- Korrelation Bootstrap-Varianz zu Trace-Dauer
|
||||
|
||||
**Regression & Modellierung:**
|
||||
- Modellierung der CI-Breite als Funktion der Bootstraps und der CPU-State-Varianz
|
||||
|
||||
**Community-Beiträge:**
|
||||
- Vergleich GitHub vs. GitLab CI für lange Jobs
|
||||
- YAML-Konfigurationsreview durch andere CI-Setups
|
||||
Loading…
Reference in a new issue