trace_agg_unit_test/trace_agg_tests/README.md

5 KiB
Raw Blame History

Unit-Test-Dokumentation für trace_agg.py

Purpose

Validierung der Korrektheit und Stabilität der Aggregationslogik in trace_agg.py durch gezielte Unit-Tests.

Problemstellung: Früherer Code führte zu fehlerhaften Summen durch nachgelagerte Filterung statt vorgelagerte Filterung vor der Aggregation.

Ziele:

  • Sicherstellen, dass Filterung und Aggregation korrekt angewendet werden.
  • Vermeidung von Zähldifferenzen bei Event-Summation.
  • Vorbereitung der Integration in die CI-Testpipeline.

Kontext & Hintergrund

Acht Trace-Export-Dateien mit durchschnittlich 62 clocksource-Events pro Datei.

Gruppierung:

  • clocksource-events
  • tracefiles

Trace-Metadaten / zusätzliche Tags:

  • Eventnamen
  • Timestamp
  • CPU-ID

Domänenkontext:

  • Performance-Tracing
  • Systemanalyse
  • Event-Aggregation

Motivation:

  • Sicherstellung reproduzierbarer Ergebnisse im Analyse-Workflow.
  • Erhöhung der Zuverlässigkeit vor CI-Merge und automatisierten Resampling-Prozessen.

Methode / Spezifikation

Übersicht:

  • Unit-Tests validieren die korrekte Funktionsweise der Aggregationspipeline.
  • Tests prüfen Summenbildung und Filterreihenfolge.
  • Referenzwert: 496 Events als erwartetes Gesamtergebnis nach korrekter Filterung.

Algorithmen / Verfahren:

  • Setup von acht repräsentativen Trace-Dateien.
  • Filterung der Events vor Aggregation.
  • Überprüfung der Summenbildung nach groupby() und sum().
  • Abgleich der aggregierten Ergebnisse mit erwarteten Zählwerten.

Bootstrap-Übersicht

Geplante automatisierte CI-Ausführung mit Sample-Traces im Bootstrap-Modus.

Zielgrößen:

  • Automatisierte Regressionserkennung
  • Stabilitätsprüfung

Resampling-Setup

  • clocksource

Stichprobeneinheit: Trace-Datei

Resampling-Schema:

  • Randomisierte Wiederholung der CSV-Samples zur Stabilitätsprüfung

Konfidenzintervalle:

  • Niveau: 0.95
  • Typ: bootstrap
  • Ableitung: automatisiert im CI-Job berechnet

Input / Output

Input-Anforderungen

Hardware:

  • Standard-x86-Testumgebung
  • CI-Runner mit Python 3.x

Software:

  • Python 3.x
  • pytest
  • pandas

Konfiguration:

  • Pfad zu Test-Traces konfigurierbar über Umgebungsvariable TRACE_SRC

Erwartete Rohdaten

Felder pro Run:

  • timestamp
  • event
  • cpu_id
  • value

Formatbeispiele:

  • 2024-04-01T10:22:33Z,clocksource,0,12345

Trace-Daten:

  • Format: CSV
  • Hinweis: Traces mit variabler Länge, aber konstantem event-schema

Analyse-Ausgaben

Pro Gruppe / pro Governor:

  • Summe pro Eventtyp
  • Validierungsstatus (Pass/Fail)

Vergleichsausgaben:

  • pre_fix vs post_fix
    • Δ: 0.6%
    • CI(Δ): [1.2%, 0.0%]
    • RR: 0.993
    • CI(RR): [0.986, 1.0]
    • Tests: nicht berechnet, Vergleich deterministisch

Workflow / Nutzung

Analyse-Workflow:

  • Trace-Daten in Testverzeichnis kopieren.
  • Unit-Tests mit pytest ausführen.
  • Ergebnisvalidierung anhand erwarteter Summen.
  • Optional: CI-Integration für automatisierte Testläufe.

Trace-Template-Anforderungen

Ziel: Automatisierte Prüfung der Aggregationslogik für clocksource-Events.

Erforderliche Tags & Metadaten:

  • event=clocksource
  • cpu_id
  • timestamp

trace-cmd-Setup:

  • tracer-cmd record -e clocksource
  • export als CSV vor Testlauf

Run-Design für Contributors:

  • Bereitstellen kleiner Trace-Sets (≤10 Dateien) zur Validierung von Aggregationspfaden.

Interpretation & erwartete Ergebnisse

Kernbefunde:

  • Fehlerhafte Summierung durch falsche Filterposition behoben.
  • Ergebnisse stabil und reproduzierbar über alle Test-Traces.

Implikationen für Experimente:

  • trace_agg.py kann nun als stabil eingestuft werden.
  • Basis für fortgeschrittenes CI-Bootstrap-Testing geschaffen.

Planungsziel:

  • Ziel: Validierte Basisversion zur Integration in automatisierte Langzeittests.
  • Vorgehen:
    • Integration in CI über täglichen Trace-Testlauf.
    • Erweiterung des Testumfangs auf C-State-Vergleiche.

Limitationen & Fallstricke

Datenbezogene Limitationen:

  • Begrenzte Testdatenmenge (acht Traces) kann seltene Eventtypen unberücksichtigt lassen.

Bootstrap-spezifische Limitationen:

  • Bootstrap-Auswertung geplante Erweiterung, aktuell noch manuell.

Kausalität & Generalisierbarkeit:

  • Test validiert Logik, nicht Performance oder Laufzeitverhalten unter hoher Last.

Praktische Fallstricke:

  • Ungenaue Trace-Dateipfade führen zu Testfehlern.
  • Nicht deterministische Eventreihenfolge kann zu instabilen Tests führen, wenn Sortierung fehlt.

Nächste Schritte & Erweiterungen

Geplante Experimente:

  • Integration des Fixes in CI-Pipeline mit automatisiertem Bootstrap-Testlauf.
  • Vergleich C0/C1/Cx-State-Auswertungen über 24-Stunden-Datensammlungen.

Analyseziele:

  • Quantifizierung von Aggregationsabweichungen über mehrere Runs.
  • Automatische Regressionserkennung durch Resampling.

Regression & Modellierung:

  • Bootstrap-basierte Stabilitätsmodelle zur Erkennung von Event-Drift.

Community-Beiträge:

  • Bereitstellung zusätzlicher Trace-Datensätze zur Validierung des Tools.
  • Erfahrungsberichte zu Testautomation im CI-Kontext.