Skip to content

Commit 2d425a8

Browse files
committed
tuner: let the CPU test settle before judging stability
Pinning the governor was not enough: the monitor thread starts sampling at t=0, before sysbench has spun every thread up, so it caught the machine still idling and that one low reading became the "minimum under load". The control proves it — a known-good 3500 MHz was rejected at "1396 MHz" while the live frequency mid-bench was 3493. It now ignores the first 8 seconds. With that, the ladder runs clean on this board: 3500/3600/3700/3800/3900/4000 all pass, scores climbing 5118 -> 5849 ev/s (+14%), and 4000 holds 3971 MHz at 81 C. Worth knowing: 4000 is crash-free over a 6-minute CPU+GPU soak (0 MCEs) but the board then throttles to ~3400 MHz pinned at 86 C — past that point the limit is the heatsink, not the silicon.
1 parent dc456c6 commit 2d425a8

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

apps/tuner/skillfish-tuner-helper

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,13 @@ def bench_cpu(secs=60):
314314
samp={"minf":99999,"maxt":0}
315315
stop=threading.Event()
316316
def mon():
317+
# sysbench needs a moment to spin every thread up. Sampling from t=0 caught
318+
# the machine still idling and that single low reading became the "minimum",
319+
# failing even a known-good clock — 3500 was rejected at 1396 MHz while the
320+
# live frequency mid-bench was 3493. Let the load settle before believing it.
321+
deadline = time.monotonic() + 8
322+
while not stop.is_set() and time.monotonic() < deadline:
323+
time.sleep(0.5)
317324
while not stop.is_set():
318325
f=cpu_min_freq(); t=temp("k10temp")
319326
if f>0 and f<samp["minf"]: samp["minf"]=f

system/usr/local/bin/skillfish-tuner-helper

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,13 @@ def bench_cpu(secs=60):
314314
samp={"minf":99999,"maxt":0}
315315
stop=threading.Event()
316316
def mon():
317+
# sysbench needs a moment to spin every thread up. Sampling from t=0 caught
318+
# the machine still idling and that single low reading became the "minimum",
319+
# failing even a known-good clock — 3500 was rejected at 1396 MHz while the
320+
# live frequency mid-bench was 3493. Let the load settle before believing it.
321+
deadline = time.monotonic() + 8
322+
while not stop.is_set() and time.monotonic() < deadline:
323+
time.sleep(0.5)
317324
while not stop.is_set():
318325
f=cpu_min_freq(); t=temp("k10temp")
319326
if f>0 and f<samp["minf"]: samp["minf"]=f

0 commit comments

Comments
 (0)