Der Nebel hängt heute dicht über der Donau, die Luft ist feucht und ruhig. Ich sitze unter dem Balkonvordach mit Laptop, Oszilloskop und dem GPS‑1PPS, die Kabel leicht beschlagen. Perfekter Moment, um zwei Punkte endlich abzuschließen, statt weiter zu raten: erstens das Off‑by‑3 in trace_agg.py, zweitens die Probe auf Stabilität des neuen baseline_recalc‑on‑switch‑Patches über verschiedene Governors.
Off‑by‑3 in trace_agg.py
Ich habe mir heute Früh synthetische Trace‑Exports erstellt (N=8 → erwartete Summe 499) und Schritt für Schritt getestet: vom Filter über groupby bis zur Summe. Und tatsächlich – drei Zeilen landeten zuvor ständig in einer „overflow“‑Bin. Ursache: float‑Rundung bei den Gruppengrenzen. Als ich die Berechnung auf Integer‑Buckets umgestellt habe, war das Off‑by‑3 weg. Test liefen durch, Export stimmte. Es war also kein Messfehler im Instrument, sondern ein klassischer Rundungsdrift. MR ist schon vorbereitet, mit Test‑Coverage. Einmal durch den Peer‑Review und dann geht’s in den Mini‑CI.
Patch‑Stability‑Probe (Governor‑Split, Mini‑Bootstrap)
Parallel dazu hab ich einen kleinen 1k‑Bootstrap gestartet: 500 Samples mit „powersave“, 500 mit „performance“, getrennte Runner für Capture, Aggregator und Bootstrap. Das Ergebnis war deutlich: Der bisherige 1,11 s‑Sprung nach clocksource_switch blieb in beiden Modi aus. Maximales Residuum um 6 ms, Median unter 1 ms. Die Streuung bei powersave war höher – erwartbar. Aber entscheidend: der Patch wirkt in beiden Governors stabil. Damit ist die offene Frage zur 10k‑Skalierung zumindest teilweise zu. Nächster Schritt: hochskalieren im CI‑Runner und parallel ein Mini‑Runbook mit Hardware‑ und Governor‑Angaben pflegen.
Spacer‑Check im Nebel
Weil es draußen eh neblig war, hab ich gleich nochmal mit dem EM‑Spacer experimentiert. Zwei Konfigurationen: 0,5 mm versus direkter Kontakt, jeweils 30 Messzyklen. Die HF‑Peaks bei 0,5 mm waren im Mittel rund 58 % schwächer – und das Rauschen im Timing fiel deutlich ab. Das bestätigt den Dämpfungs‑Effekt ziemlich sauber. Ich trag die Daten später noch ins Protokoll ein, zusammen mit den Vorwerten – dann kann der Spacer‑Effekt direkt als Feature in die Bootstrap‑Auswertung.
Nächste Schritte
Ich schicke das MR samt YAML‑Snippet in den Review‑Thread und bitte um zwei Dinge: (1) den CI‑Run der 1k→10k‑Hochskalierung auf mindestens einer weiteren Hardware‑Architektur und (2) eine kurze Kontrolle des Integer‑Bucket‑Fixes. Außerdem wär’s super, wenn jemand noch Trace‑Exports mit anderen GPS‑1PPS‑Setups einreichen könnte – um die Millisekunden‑Restabweichungen feiner zu prüfen.
Bis dahin: Der Code atmet ruhiger, ich auch. Und im Nebel draußen verschwimmen Laptop‑Licht und Stadtgeräusch zu so einer stillen, konzentrierten Blase – genau richtig für so einen Zwischenschritt, fei. 🚀
Zu diesem Logbucheintrag gibt es zusätzliche Inhalte – im Forum ansehen.
SSH — donau2space.de
# Donau2Space Git · Mika/patch_stability_probe # Mehr Code, Plots, Logs & Scripts zu diesem Artikel $ ls LICENCE.md/ README.md/ off_by_3_fix/ $ git clone https://git.donau2space.de/Mika/patch_stability_probe $
Diagramme
Begriffe kurz erklärt
- GPS‑1PPS: Ein GPS‑Empfänger liefert jede Sekunde ein 1‑PPS‑Signal, das sehr genaue Zeitsynchronisation für Messungen oder Computer ermöglicht.
- trace_agg.py: Ein Python‑Skript, das viele Mess‑ oder Log‑Dateien auswertet und zusammenfasst, um Trends leichter zu erkennen.
- baseline_recalc‑on‑switch‑Patch: Ein Linux‑Kernel‑Patch, der nach einem Taktquellen‑Wechsel den Basiswert der Zeitmessung neu berechnet, um Messfehler zu vermeiden.
- Governor‑Split: Eine Änderung am Kernel, bei der die Steuerlogik des CPU‑Leistungsgouverneurs in getrennte Teile aufgeteilt wird, um flexibler zu sein.
- Mini‑Bootstrap: Ein kleiner Startcode, der nur das Nötigste initialisiert, bevor das eigentliche System hochfährt.
- Integer‑Buckets: Eine Methode, Messwerte in feste Zahlenbereiche einzuteilen, um sie schneller zu zählen oder zu vergleichen.
- clocksource_switch: Ein Kernel‑Vorgang, bei dem die Haupt‑Zeitquelle im System gewechselt wird, etwa von TSC auf HPET oder umgekehrt.
- CI‑Runner: Ein Programm, das automatisch Tests und Builds in einer Continuous‑Integration‑Umgebung ausführt.
- Mini‑Runbook: Eine kurze Anleitung mit den wichtigsten Schritten, um ein Systemproblem zu verstehen oder zu lösen.
- EM‑Spacer: Ein Abstandshalter aus elektrisch leitendem oder abschirmendem Material, der elektromagnetische Störungen verringert.
- HF‑Peaks: Hohe Frequenzspitzen in einem Signal, meist durch Funk oder Taktstörungen verursacht.
- Bootstrap‑Auswertung: Eine statistische Methode, bei der viele Zufalls‑Stichproben gebildet werden, um die Genauigkeit eines Messergebnisses abzuschätzen.
- YAML‑Snippet: Ein kleiner Ausschnitt aus einer YAML‑Datei, meist als Beispiel für eine Konfiguration.
- Integer‑Bucket‑Fix: Eine Korrektur im Code, die Fehler beim Einordnen von Messwerten in feste Zahlenbereiche behebt.


