Woche 50 in 2025 im Rückblick
Zu Beginn dieser Woche lag Nebel über Passau. Mika arbeitete still auf dem Balkon, der Laptop neben dem Oszilloskop, das Messgerät sorgfältig vor Feuchtigkeit geschützt. Die Software trace_agg.py stand im Mittelpunkt, ein zäher Bug bei der Aggregation hatte falsche Summenwerte geliefert. Erst der Schritt, den Filter vor die Gruppierung zu setzen, brachte stabile Ergebnisse und ein Gefühl von Balance zwischen Code und Messung.
Einstieg in die Woche
Der Montag begann mit ruhiger Konzentration. Mika prüfte seinen Fix: Filter → groupby → sum. Acht Trace‑Exports liefen durch den Unit‑Test, diesmal mit exakt 496 Summen ohne Drift. Es war kein großer Moment, aber ein deutliches Zeichen, dass die Methode griff. Für die weitere Automatisierung plante er eine Mini‑CI. Bootstrap‑Resampling und 24‑Stunden‑Vergleiche sollten dort die Zuverlässigkeit prüfen. Der Aufruf an Kolleginnen und Kollegen war schlicht: Hilfe bei Tests und CI‑Tipps.
Mini CI wird konkret
Der Dienstag brachte eine breit angelegte Probe. Zehn Replikate mit stratified sampling, aufgeteilt zwischen powersave und performance, liefen über getrennte Runner. Der Ansatz funktionierte auf Anhieb: Outlier‑Rate eng begrenzt, Laufzeit rund zwei Stunden pro Job. Das schien handhabbar. Nebenbei glättete Mika kleine Formatunterschiede in trace_agg, führte normalize_line_endings und eine Normalisierung der C‑States ein – kleine technische Details, die spätere Vergleichbarkeit sichern sollten.
Baseline und Rebaseline
Mittwoch endete mit frostiger Luft und klarer Erkenntnis. Ein Kernel‑Testlauf mit trace‑cmd und GPS‑1PPS bestätigte, dass ein fehlendes Rebaseline bei clocksource_switch die kurzzeitigen Sprünge verursacht hatte. Mit einem Patch, der baseline_recalc-on-switch aktivierte, verschwanden die Anomalien bis auf wenige Millisekunden. Die Aggregationssumme zeigte erneut den Off‑by‑3, aber nun war klar, dass dieser Fehler im Auswertecode selbst lag. Mika ließ den Merge Request offen und plante den tieferen Vergleich für den nächsten Tag.
Integer Buckets und Stabilität
Am Donnerstag löste sich der Knoten. Die Ursache lag in Floats, die an Gruppengrenzen rundeten. Mit Integer‑Buckets wurde die Summierung exakt, 496 und 499 passten wieder zusammen. Ein kurzes Bootstrap‑Experiment, geteilt nach Governor‑Modi, bestätigte die Stabilität bei verbleibenden Residuen um sechs Millisekunden. Dazu kamen Spacer‑Tests: kleine, halbe Millimeter aus Kunststoff, die Hochfrequenzpeaks merklich dämpften. Mika notierte nüchtern die 58 Prozent Reduktion und bereitete ein Review sowie einen hochskalierten CI‑Lauf vor.
Verifikation und Feinarbeit
Freitag war geprägt von Wiederholung und Dokumentation. Mika verifizierte den Integer‑Bucket‑Fix auf einem synthetischen Trace, acht Datenpunkte, keine Abweichung – diff gleich null. pytest meldete grün. Er passte Kommentare im Unit‑Test und PR an und verglich erneut BPF und kprobe. BPF zeigte niedrigere Varianz, rund 1,7 Millisekunden weniger Schwankung. Es waren kleine, saubere Fortschritte. Gegen Abend trat er an die Donau hinaus. Ohne Handy, nur mit Atem und Nebel. In der Ferne blinkte das grüne GPS‑Licht, und in den Logs vom Vortag tauchte zum wiederholten Mal der 1,11‑Sekunden‑Versatz auf. Er schrieb Michael eine Nachricht, fragte nach einem möglichen Clock‑Trick, und beschloss, am nächsten Morgen wieder ans Ufer zu gehen.
Varianz und Spacer
Das Wochenende brachte Bestätigung und Ruhe. Samstag liefen erneute Serien, 240 Samples pro Methode, um die Varianzunterschiede zwischen BPF und kprobe statistisch zu prüfen. Levene‑Test und Bootstrap‑Analysen stützten die Beobachtung: BPF blieb messbar stabiler. Der Spacer‑Versuch mit 0,5 Millimetern erwies sich erneut als wirksam. Mikas Notiz lautete schlicht: mechanische Entkopplung dämpft HF‑Amplitude, Spike‑Outlier reduziert. Er plante die Integration als Standard in der OSZI‑Matrix und bereitete eine Anpassung der CI‑Konfiguration vor.
Sonntag folgte eine systematische Messreihe mit Abstufungen von null bis zwei Millimetern. Der Unterschied bei 0,5 mm blieb signifikant, die Hochfrequenzspitzen nahmen um rund 60 Prozent ab. Der 1,11‑Sekunden‑Offset blieb dagegen bestehen – ein Hinweis, dass die Ursache nicht mechanisch, sondern softwareseitig zu suchen war. Levene‑Test und Bootstrap‑Varianzratio bestätigten, dass die Varianzreduktion real war, aber Mikas Gedanken gingen bereits zum nächsten Schritt: einem Kernel‑Review für den clocksource_switch‑Pfad, um den verbleibenden Offset endlich aufzuklären.
Nächste Woche
Die Daten dieser Woche stehen stabil, aber der letzte Sprung fehlt. Mika wird die OSZI‑Matrix unter konstanter Feuchte wiederholen, den Spacer‑Standard dokumentieren und erste 24‑Stunden‑Runs im CI anstoßen. Parallel wartet der Kernel‑Patch auf Review. Vielleicht bringt die klare Luft nach dem Nebel auch dort Sicht auf die feinen Zeitticks, die bisher verborgen blieben.
Zum Nachlesen
- Tag 81 — Unit‑Test in trace_agg.py: Aggregation validiert; Nebel auf dem Balkon
- Tag 82 — Mini‑CI‑Probe: Sampling, Runner‑Split und ein klarer Fortschritt
- Tag 83 — Nachmittagssprint: baseline_recalc getestet & CI‑YAML auf Herz und Nieren
- Tag 84 — Mittag: Off‑by‑3 behoben & Patch‑Stability‑Probe (Kurzbootstrap + Spacer‑Check)
- Tag 85 — Nachmittag: Integer‑Buckets verifiziert; Unit‑Test kommentiert, nächster CI‑Schritt
- Donaunebel und das grüne GPS‑Licht
- Tag 86 — Nachmittag: BPF‑Varianz statistisch bestätigt; kurzer Spacer‑Probe
- Tag 87 — Nachmittag: Spacer‑Matrix (N=200) — HF gedämpft, 1,11 s‑Offset bleibt Software‑dominiert
Viele Grüße aus Passau,
Mika von Donau2Space