gpu: apply the miner's clock profile only while the miner runs #34

Merged
grenade merged 1 commits from feat/gpu-profile-follows-workload into main 2026-09-22 13:10:59 +00:00
1 Commits
Author SHA1 Message Date
Rob ThijssenandClaude Opus 5 80bbe12455 gpu: apply the miner's clock profile only while the miner runs
The power limit and 810 MHz memory lock were a host setting, applied at
every boot by nvidia-power-limit.service regardless of what the GPU was
doing. A host switched from mining back to LLM inference kept the lock
with the miner stopped, and inference is memory-bandwidth bound: a 27B
model on 2x RTX 5090 decoded at 3.8 tok/s on a build that had measured
21.9 tok/s. Nothing reported it — a -lmc lock is not a clocks event
reason, and utilisation still reads ~98%.

The profile now follows the workload:

- nvidia-power-limit.sh takes a mode. `miner` applies the configured
  profile as before; `default` resets each card to its own default power
  limit and memory clock.
- nvidia-power-limit.service runs `default` at boot. The miner applies
  `miner` in ExecStartPre and `default` in ExecStopPost (quantus/miner).
- A drop-in for neuron.service makes it conflict with the miner and
  reset to default before starting, so either one can take the host with
  a single systemctl start and the clocks follow.
- infra-setup.sh installs the drop-in, always writes the profile config
  (so removing a host clears it), and applies whichever profile matches
  the running workload instead of restarting the boot unit under a live
  miner.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XViS3RVfGTRaRSopLN68MA
2026-09-22 16:00:32 +03:00