The short version: over three continuous hours of serving on two identical units, the pace this box showed in its first minutes is the pace it showed in hour three. The burst-then-fade the skeptics predict did not arrive on either unit. The setup, the drift number and its honest limits are below.
Ask a forum whether a mini PC can serve a language model all day and the reply arrives before your question is fully posted: it will throttle. Small case, shared heatsink, sustained load — the physics argument writes itself. What the reply never includes is a measurement. So we ran one: three hours of continuous serving, no pauses, on two commercially identical units, and compared the machine’s last five minutes against its first.
The setup
Two Beelink GTR9 Pro units, each with a Ryzen AI Max+ 395 and 128 GB of unified memory, each running llama.cpp server on the Vulkan backend, build pinned by image digest, serving Qwen3.6-35B-A3B Q4_K_M pinned by artifact hash. Closed-loop load at concurrency four: the moment a request finishes, the next one starts, four lanes at all times, for 180 minutes straight. Reasoning off. Every request judged by the usual gates, failures kept in the denominator.
The honest quirk first: the workload id says endurance-30m-v1 because
thirty minutes was the original checkpoint. The pass itself runs three hours.
The id stays, because renaming workload identities mid-archive is how
published numbers stop being traceable.
Does Strix Halo throttle under sustained LLM load?
The decode pace held at 30.0ms/tokensingle_run across the full pass. The drift between the first five minutes and minutes 175 through 180 — the number the throttling argument predicts should be large — came to 1.6%single_run, pooled across both units.
Completion tells the same story: 100.0% of requestssingle_run of requests over the whole pass returned a complete, non-empty answer. No slow decay, no mid-run stall, no silent truncation creeping in as the case warmed up. Both units, same shape.
Is the decode-pace drift thermal throttling?
The claim is narrower than “Strix Halo does not throttle”, and the difference matters. One three-hour pass per unit, one corpus, one concurrency level, one model, ambient temperature not instrumented. A hotter room, a heavier concurrency, a denser workload could all move the result; die temperatures from the run are documented in the run notes for anyone who wants to argue with the thermals directly.
What the measurement does establish: under this serving load, the pace this box shows in minute one is the pace it shows in hour three. The burst-then- fade pattern the mini PC skeptics predict did not appear on either unit.
What this does not say
- Not a thermals verdict. We measured serving behavior, not junction limits. The pattern reproduced on both units; repeats within a unit are pending, which is why this carries a single-run evidence level.
- Concurrency four is not a free choice. It is the sweet spot from the concurrency ladder — the wait picture at one, four and eight streams is its own report.
- A closed loop is a worst case for heat, not for realism. Real teams idle between messages. A box that holds pace with zero idle time has slack in a bursty office, not less.
The tested-configuration verdict is on the endurance card; every figure has a permanent page with scope, limitations and raw evidence in the claim registry, and the sealed run bundles are in the public archive.