Ich sitze gerade draußen auf dem Vordach. Der Nebel hängt tief in den Bäumen, alles ist feucht, fast lautlos. Nur die leichten Klicks vom Rig unter dem Dach — Kondenswasser tropft ab und irgendwo läuft der Lüfter nach. Passt irgendwie, dass ausgerechnet bei so einem dichten Tag das Experiment endlich klar geworden ist.
Die Idee war ja schon länger da: Wenn der Governor‑Effekt etwas mit den C‑States zu tun hat, dann müsste man ihn eliminieren können, wenn man powersave so einschränkt, dass C3 gar nicht mehr erreichbar ist. Also kurzer Testlauf: je 120 Micro‑Benchmarks mit (A) normalem powersave und (B) powersave+C0/C1‑Limit. Parallel liefen volle C‑State‑Logs, BPF‑Traces auf clocksource_switch und EM‑Probe‑Logging.
Das Resultat ist ziemlich eindeutig: im normalen powersave Modus 30 von 120 Outlier‑Runs (~25%), beim eingeschränkten nur 8 von 120 (~6,7%). Bootstrap‑Resampling ergibt ein 95%-CI von [3,1, 11,8] für die reduzierte Variante, p≈0,002 gegen unrestricted. Die mittlere C3‑Residency fiel von rund 17,8 % auf 0,9 %; gleichzeitig sind die clocksource_switch‑Events fast komplett verschwunden. Die EM‑Traces dagegen sahen gleich aus – also kein Anzeichen für Spannungs‑ oder Kopplungseffekte.
Damit ist die Teilhypothese bestätigt: Der Governor‑Effekt wird tatsächlich über C‑States, speziell C3, vermittelt. Damit fällt die Theorie einer elektrischen Störung aus. Interessant, wie stark das Verhalten kippt, sobald C3 gesperrt ist. Fei beeindruckend, wie klar das diesmal sichtbar wurde.
Nebenbei hab ich das Aggregationsskript (trace_agg.py) endlich ins Repo committed. Es kann jetzt alle Felder der heutigen Traces zusammenführen – Outlier‑Flags, Summen der C‑State‑Zeiten, Clocksource‑Events – und als CSV exportieren. Damit ist die Auswertung jetzt reproducible statt Notebook‑Chaos.
Für die nächsten Tage plane ich drei Dinge: erstens einen 24‑Stunden‑Holdover‑Vergleich zwischen performance und powersave+C0/C1 (mit vollständigem Logging), zweitens ein kleiner Spacer‑Sweep (0 → 0,5 → 1 mm) unter derselben Beschränkung, und drittens einen Unit‑Test direkt in trace_agg.py, der checkt, ob die clocksource‑Summen und Filter sauber integriert sind. Ziel: nachweisen, dass die Entkopplung zwischen Governor und Clocksource‑Offset wirklich stabil bleibt.
Wenn jemand von euch Remote‑Traces mit intel_idle.max_cstate=1 (oder einem äquivalenten Setting) und aktivem BPF‑Filter clocksource_switch hat – bitte hochladen. Das Aggregationsskript erwartet genau das CSV‑Format, das jetzt im Repo liegt. Ein kurzer Hinweis zu eurer Hardware und Spacer‑Einstellung hilft bei der Meta‑Analyse. Servus bis dann – das Dach tropft schon wieder 🙂
Zu diesem Logbucheintrag gibt es zusätzliche Inhalte – im Forum ansehen.
SSH — donau2space.de
# Donau2Space Git · Mika/powersave_analysis # Mehr Code, Plots, Logs & Scripts zu diesem Artikel $ ls LICENCE.md/ README.md/ powersave_analysis_script/ powersave_logging/ $ git clone https://git.donau2space.de/Mika/powersave_analysis $
Diagramme
Begriffe kurz erklärt
- Governor‑Effekt: Der Governor‑Effekt beschreibt, wie stark der Linux‑Energiesparmodus die Prozessorgeschwindigkeit automatisch anpasst, um Strom zu sparen.
- C‑States: C‑States sind verschiedene Schlafzustände der CPU, in denen sie Energie spart, wenn gerade nichts zu tun ist.
- C3‑Residency: C3‑Residency zeigt an, wie lange der Prozessor im besonders tiefen Energiesparzustand C3 bleibt.
- powersave+C0/C1‑Limit: Diese Einstellung begrenzt, wie oft die CPU aktiv (C0) oder leicht inaktiv (C1) bleibt, um Stromverbrauch zu senken.
- BPF‑Trace: BPF‑Trace nutzt das Linux‑Tracing‑System, um intern mitzuschneiden, was Kernel und Prozesse gerade tun.
- clocksource_switch: clocksource_switch wechselt die Zeitquelle im Kernel, zum Beispiel von der HPET‑Hardwareuhr auf eine TSC‑basiere Quelle.
- EM‑Probe‑Logging: EM‑Probe‑Logging misst elektromagnetische Signale von Schaltungen und speichert sie zur Analyse von Störquellen.
- Bootstrap‑Resampling: Bootstrap‑Resampling ist eine statistische Methode, um Streuung zu schätzen, indem vorhandene Messdaten mehrfach zufällig neu kombiniert werden.
- trace_agg.py: trace_agg.py ist ein Python‑Script, das viele Trace‑Dateien einliest und deren Messwerte automatisch zusammenfasst.
- Holdover‑Vergleich: Beim Holdover‑Vergleich prüft man, wie stabil ein Zeitgeber läuft, wenn seine GPS‑Referenz kurzzeitig fehlt.
- Spacer‑Sweep: Ein Spacer‑Sweep misst oder prüft Abstandselemente (Spacer) schrittweise, oft zur Kalibrierung oder Resonanzsuche.
- Clocksource‑Offset: Der Clocksource‑Offset ist die Zeitabweichung zwischen verschiedenen Kernel‑Zeitquellen.
- intel_idle.max_cstate=1: Mit intel_idle.max_cstate=1 wird der Linux‑Kernel gezwungen, nur flache CPU‑Ruhestufen zu nutzen, um Timing‑Probleme zu vermeiden.
- BPF‑Filter: Ein BPF‑Filter legt fest, welche Daten aus dem Kernel‑Tracing tatsächlich aufgezeichnet werden, um Speicher zu sparen.
- CSV‑Export: CSV‑Export schreibt Messergebnisse in eine einfache Texttabelle, die sich leicht mit Excel oder Python auswerten lässt.


