Minisforum MS-02 Ultra + RTX PRO 4000 Blackwell SFF: Power scaling & LLM benchmarks from 70W to 90W

Minisforum MS-02 Ultra + RTX PRO 4000 Blackwell SFF: Power scaling & LLM benchmarks from 70W to 90W

I wanted to know how much the 70 W cap on the RTX PRO 4000 Blackwell SFF holds it back in the MS-02 Ultra, so I measured it step by step on a local LLM. Short version: 90 W plus a memory overclock got about 26-29% more throughput than stock, with GPU temps in the mid 70s C.

This card has no aux power connector. Everything above 70 W comes through the PCIe slot, and 90 W is over the 75 W slot spec. Read the caveats before you copy any of this.

Full system specs

Part Detail
Chassis Minisforum MS-02 Ultra, BIOS 1.04 (2026-04-21), internal 350 W PSU
CPU Intel Core Ultra 9 285HX, 24 cores
RAM 128 GB: 4x 32 GB ADATA DDR5 SO-DIMM (rated 4800), running 4400 MT/s with all four slots filled
GPU NVIDIA RTX PRO 4000 Blackwell SFF, 24 GB GDDR7, VBIOS 98.03.AA.00.02, stock 70 W, slot-powered only
GPU link PCIe 5.0, x8 electrical
Storage WD_BLACK SN8100 2 TB (Gen5), Kingston OM8PGP4 1 TB (Gen4)
OS Debian 13.7, kernel 7.2.9, Secure Boot ON
Driver NVIDIA open kernel modules 615.71.10, CUDA 13.4
Inference llama.cpp (official CUDA container, build 11804), Qwen3.8-27B iMatrix NVFP4 with MTP draft head
Server flags -c 262144 -ctk q4_0 -ctv q4_0 -b 512 -ub 256 --ctx-checkpoints 4 --fit off --spec-type draft-mtp --spec-draft-n-max 1 --spec-draft-backend-sampling

What I did, in order

  1. Baseline at stock 70 W, twice, to measure run-to-run drift (0.2-0.6%).
  2. Clock offsets at 70 W through NVML (nvmlDeviceSetClockOffsets, works on stock firmware): memory +5%, core +180 MHz, core +300 MHz.
  3. Backed up the VBIOS. NVFlash --save wrote a 0-byte file on this card, and sysfs only gives the 162 KB option ROM. I captured NVFlash’s read buffer with gdb instead, which gave the full 4 MiB EEPROM. The read needed kernel lockdown off, so I disabled shim validation once with mokutil --disable-validation, read the chip, and turned it back on. That was the only time Secure Boot was relaxed.
  4. Edited 7 power fields in one bank of that image with the Vix Editor CLI: board power ceiling and rated power, slot power max and rated, and three 12 V input-current limits. No voltage fields. A full re-read of all 122 fields showed only those 7 changed.
  5. Built the patched NVIDIA open modules (Vix Loader’s 615 patch on the 615.71.10 source) and signed them with my existing MOK key.
  6. Loaded the edited image into memory, never into the EEPROM: unload the stock modules, insmod the patched ones with the image passed as a per-GPU registry option. nvidia-smi then allowed the new limit. Edited images keep a mismatched signature, so never flash one.
  7. Stepped the limit: 80 W, then 90 W. Each step got the same short bench and then a 30-minute sustained load, watching Xid, PCIe AER, temperature and output hashes. I stopped at 90 W on purpose.
  8. Memory overclock at 90 W: +10%, then +20%.
  9. Made it reload on every boot: a depmod override so the patched modules win on this kernel only, a modprobe.d file for the image, and a small systemd oneshot that sets 90 W and the memory offset only if the 90 W image actually loaded. A kernel or driver update falls back to stock 70 W. Proven across a reboot.
  10. Turned on VRAM ECC live (nvidia-smi -e 1 plus a GPU reset, no reboot) and kept running real work on it.

Benchmark

Each run: 3 short decodes (768 tokens), then 3 cold 32K-token prefills each followed by a 512-token decode. Means of 3. Every run gave byte-identical output, and none logged a GPU (Xid) or PCIe (AER) error.

Profile Short decode tok/s 32K prefill tok/s Decode @32K tok/s Core clock (decode) Peak GPU temp
70 W stock (avg of 2 runs) 32.69 920.7 28.43 ~970 MHz 67-68 C
70 W, memory +5% 32.15 919.4 28.55 832 MHz 69 C
70 W, core +180 MHz 32.83 934.1 28.77 1012 MHz 68 C
70 W, core +300 MHz 33.03 930.0 28.73 1072 MHz 67 C
80 W 34.95 1029.3 31.48 1485 MHz 70 C
90 W 35.53 1109.4 32.76 1710 MHz 73 C
90 W, memory +10% 38.80 1139.6 35.00 1582 MHz 75 C
90 W, memory +20% 41.26 1158.9 36.64 1447 MHz 74 C

Throughput vs stock 70 W, by profile

Power limit vs core clock and peak GPU temperature

vs stock, the best profile is +26% short decode, +26% prefill and +29% decode at 32K depth.

30-minute sustained runs (back-to-back cold 32K prefill + 512 decode):

Limit Requests Prefill start → end Decode Peak temp Avg power
80 W 38 1024 → 1019 tok/s (-0.5%) 31.4 tok/s flat 75 C ~79.5 W
90 W 40 1108 → 1089 tok/s (-1.7%) 32.7 tok/s flat 77 C 89.1 W

What I learned

  • At 70 W the card is power-capped the whole time. The core sags to about 1 GHz under load.
  • Overclocking at 70 W is nearly pointless. A memory offset just steals watts from the core. A core offset acts like an undervolt and buys about 1.5%, and +300 adds nothing over +180.
  • Power is what matters. 70 to 80 W gave +10-12% on prefill and deep decode. 80 to 90 W gave another +8% prefill, but decode started to flatten.
  • Once power isn’t the limit, memory is. At 90 W, +20% memory gave +12% decode even though the core clock dropped 15%.
  • NVML offset units trip people up. The memory offset is in double-data-rate units: +1800 is about +10%, +3600 about +20%. My kept setting of +3598 reads 10800 MHz.
  • With VRAM ECC on under real load at the final profile: 0 corrected, 0 uncorrected errors so far.

The slot-power caveat (please read)

  • Minisforum states only “standard 75W PCIe slot power” per slot. There’s no published margin, and I found no teardown of the MS-02 Ultra’s slot power path.
  • The PCIe spec allows 5.5 A on the slot’s 12 V pins (66 W). 80 W is about 6.7 A, 90 W about 7.5 A, roughly 1.2x and 1.4x spec. Card-edge contacts are datasheet-rated around 1.1 A each.
  • Precedent: the RX 480 in 2016 pulled about 7 A through desktop slots with no documented damage. Nothing public covers sustained draw well past that.
  • The GPU’s sensors can’t see the slot contacts. With an IR thermometer on the slot surface at 80 W: about 35 C at one end and 55 C at the end next to the CPU cooler (one reading), about 29 C at idle. That’s surface temperature, not pin temperature.
  • I would not run 106 or 120 W slot-only in this box.

If you try this, you own the risk. Watch the slot area, keep a stock rollback ready, and never flash an edited VBIOS.

Sources I leaned on

  • The original 120 W write-up on this exact card, which mapped the 7 fields and the gdb backup trick: https://piszczek.pl/blog/rtx-pro-4000-blackwell-sff-120w-qwen-benchmark
  • NVIDIA VBIOS Vix Loader (patched open modules, in-memory VBIOS override): https://github.com/Panchovix/nvidia-linux-vbios-vix-loader
  • NVIDIA VBIOS Vix Editor (nvbios fields / edit / normalize): https://github.com/Panchovix/nvidia-vbios-vix-editor
  • NVIDIA open GPU kernel modules, tag 615.71.10: https://github.com/NVIDIA/open-gpu-kernel-modules
  • Minisforum MS-02 Ultra base guide (75 W per slot, 350 W PSU): https://github.com/minisforum-docs/MS-02-Ultra/blob/main/Docs/English/02-Ultra-BaseGuide.md
  • ServeTheHome MS-02 Ultra review (power connector, 8-pin lead): https://www.servethehome.com/minisforum-ms-02-ultra-review-intel-new-home-lab-king/2
  • The model: https://huggingface.co/cdiamond/Qwen3.8-27B-iMatrix-NVFP4-MTP-GGUF
  • llama.cpp: https://github.com/ggml-org/llama.cpp

Questions welcome.