-
Notifications
You must be signed in to change notification settings - Fork 3
GPU Governor and Tuning
Warning: Read the Voltage curve section before pushing GPU clocks. The wrong curve can hard-freeze the whole machine.
The standard amdgpu sysfs knobs (power_dpm_force_performance_level, pp_dpm_sclk) do not control the BC-250 — they return errors. On the Cyan Skillfish GPU only the SMU sets the clock, through the OD voltage curve (pp_od_clk_voltage, vc <point> <MHz> <mV>).
SkillFishOS uses the cyan-skillfish-governor (Rust) as a systemd service, configured in /etc/cyan-skillfish-governor/config.toml. It is load-based: it samples a busy/idle bit and settles on the lowest frequency that keeps GPU utilisation inside the [load-target] band, idling to 350 MHz when nothing uses the GPU.
The SkillFishOS Control Center's Tuner section draws the V/F curve as a chart (MHz across, mV up); the knots are draggable on the chart and also editable in a table beside it. A ceiling caps the max MHz. Three presets: Cautious (1850 MHz), Balanced (2000 MHz), Performance (2100 MHz) — all below the 2200 MHz validated-stable point (see Voltage curve below), reachable by hand if you want to go further.
Apply runs the candidate curve on trial for 25 seconds; the previous curve stays on disk unless you press Keep. Watch the trial in the Control Center's Monitor section (temperature/frequency/voltage/fan charts) instead of a separate pop-up window.
Measured — Black Myth: Wukong benchmark, 1080p (captured with the GPU clocked low vs. held at 2200 MHz, before the Tuner section took its current shape):
| Lower clock | Held at 2200 MHz | |
|---|---|---|
| Average FPS | 100 | 111 (+11%) |
| 5%-low FPS | 92 | 102 (+11%) |
An older note claimed 2000 ≈ 2230 MHz gave identical FPS. That holds for gameplay (more CPU/draw-call bound); the benchmark flythrough is heavier and is GPU-bound, so holding a high clock clearly helps there. A higher ceiling runs hotter — keep the fan up (the Fan section controls it).
The governor follows a multi-point voltage curve of safe-points. SkillFishOS ships:
[[safe-points]]
frequency = 350
voltage = 700
[[safe-points]]
frequency = 1500
voltage = 900
[[safe-points]]
frequency = 2000
voltage = 1000
[[safe-points]]
frequency = 2200
voltage = 1000Two rules, both learned the hard way:
- 1000 mV is the practical stable ceiling at ~2150–2200 MHz. 2230 MHz @ 1000 mV is undervolted. Pushing the top point to 2230 @ 1000 mV, or pinning a fixed 2230 MHz OD point, can hard-freeze the machine — a total hang where the kernel still answers ping but everything else is dead, and nothing is written to the logs. 2230 needs 1000–1060 mV and depends on the silicon lottery.
-
Use a smooth, multi-point curve, not a 2-point line. A
350/700 → 2230/1000two-point curve makes abrupt clock/voltage transitions and was reproducibly able to hang the box on the load→idle transition. The mid-points (1500/900,2000/1000) keep transitions gentle.
The Performance preset caps the GPU at 2100 MHz — below the 2200 MHz @ 1000 mV validated-stable point — always writes the multi-point curve, and reloads the governor gently (stop → settle → start) instead of an abrupt restart. 2000 MHz @ 1000 mV (the Balanced preset) is the safe starting point for every board.
Drag the knots on the Tuner section's chart, or edit the table beside it, to write your own curve and ceiling above what the three presets offer. Apply runs it on trial for 25 seconds — watch the Monitor section for temperature/frequency/voltage/fan — and only Keep makes it permanent. The Tuner's Test panel also runs vkpeak on demand, with the helper log alongside it, so you can validate stability before keeping a setting.
If you really want >2200 MHz, raise the voltage first, increase the clock in 50–100 MHz steps, and stress-test 30+ minutes at each step. There are no guarantees above 2200 @ 1000 mV.
Memory bandwidth was measured (clpeak/OpenCL) at ~350–367 GB/s — healthy, not a bottleneck. The Memory Clock 450 MHz the driver reports is a reporting convention, not a 1/4 clock; the memory clock is not adjustable on the BC-250.
Getting started
Apps
Tuning & hardware
Using it
Developers