--- type: reference title: Dankserver System Specs description: "Dankserver hardware and OS state since the board swap: board, lane topology, cards, memory, kernel posture." tags: - dankserver - hardware - r9700 - gfx1201 - rocm timestamp: 2026-09-20 --- # Dankserver System Specs ## Server Overview Dankserver is a media/library server and the `frank-archon` LLM host (radiance 1.0.13, 2×R9700 tensor-parallel — [[frank-archon]]; the `frank-medium` name this page carried was retired 2026-09-20, see §Active Services). The host runs Ubuntu 26.04 (Resolute Raccoon). The RTX 3090 that served the FreeToken/CUDA `frank-zealot` era was removed on 2026-09-15 and replaced with two AMD Radeon AI PRO R9700 cards (`lspci | grep -ci nvidia` → 0, read 2026-10-18). ## Hardware Specifications ### Motherboard | Property | Value | |----------|-------| | Board | **ASUS ProArt B850-Creator WiFi NEO** (Rev 1.xx) — swapped in 2026-09-20 | | Previous | ASUS TUF GAMING B650-E WIFI (card #2 was behind the chipset there; see ) | | GPU lanes | CPU GPP ports bifurcated **x8/x8** at Gen5: `PCIEX16(G5)_1` → `00:01.1`, `PCIEX16(G5)_2` → `00:01.3` (both bridges: `current_link_width=8`, `current_link_speed=32.0 GT/s`, read 2026-10-18); ~31.5 GB/s per card. Each card sits behind an on-board PCIe switch (`01:00.0`/`02:00.0`, `05:00.0`/`06:00.0` — "Navi 10 XL Upstream/Downstream Port of PCI Express Switch"), so the GPU endpoint itself trains **x16** Gen5 while the CPU-facing leg stays x8 | | Atomic routing | `AtomicOpsCap: Routing+` on every bridge in both GPU chains, `AtomicOpsCtl: ReqEn+` on both endpoints — the condition that ruled out TP=2 for the previous board (2026-09-20 census; not re-readable today — `lspci -vv` needs root) *(unverified 2026-10-18)* | | Free | `PCIEX16(G4)` (chipset, x4), M.2_2, M.2_3 | | Occupied M.2 | M.2_1 — boot NVMe (Samsung PM9C1a, DRAM-less, `04:00.0`), trained **x2** at Gen5 (`current_link_width=2`, `current_link_speed=32.0 GT/s`, `max_link_width=4`, read 2026-10-18; 63 Gb/s ≈ 7.9 GB/s) | | Onboard | 2× Realtek RTL8126 5GbE (`0b:00.0`, `0d:00.0`), RTL8922AE WiFi 7 (`0e:00.0`), ASMedia ASM1064 SATA (`0c:00.0`) + AMD 600-series SATA (`10:00.0`); the board's "PROM21 SATA" label is not what `lspci` reports *(unverified 2026-10-18)* | ### CPU | Property | Value | |----------|-------| | Architecture | x86_64 | | Vendor | AuthenticAMD | | Model | AMD Ryzen 7 7700X | | Cores | 8 cores / **8 threads** today — SMT is **off** (`lscpu`: `CPU(s): 8`, `Thread(s) per core: 1`, `Core(s) per socket: 8`, read 2026-10-18; max observed 5575.87 MHz). The board-swap era recorded 16 threads with SMT on; BIOS defaults reset with the board swap. The `--threads 8 --threads-batch 8` llama.cpp note belongs to the retired llama.cpp serving era | | NUMA Nodes | 1 (node 0) | ### GPUs | Property | Value | |----------|-------| | Model | 2x AMD Radeon AI PRO R9700 (Navi 48, DID 0x7551, rev c0) | | Architecture | gfx1201 (RDNA4) | | VRAM | 32,624 MiB each (`rocm-smi` reports 34,208,743,424 B per card) | | Link | PCIe 5.0, endpoint-trained **x16** each behind the on-board switch; the CPU-facing leg is x8 (`00:01.1` / `00:01.3`, both `current_link_width=8` at 32.0 GT/s, read 2026-10-18). No XGMI. Separate IOMMU groups — `03:00.0` → group **15**, `07:00.0` → group **20** (`/sys/bus/pci/devices/.../iommu_group`, read 2026-10-18) | | P2P | **Live and in use.** The running engine prints "I device: the 2 cards reach each other's memory directly (peer to peer)" (`podman logs frank-archon`, 2026-10-15 boot). The 2026-09-20 census had predicted the opposite — ACS `ReqRedir+` on both root ports, so traffic hairpinning at the root complex — and that prediction is superseded; see | | PCI | 03:00.0 and **07:00.0** (were `03:00.0` / `0b:00.0` on the B650-E) | | iGPU | Raphael (gfx1036) at **11:00.0** — enumerates as ROCm device 2 (rocm-smi GPU[2], 512 MiB). The retired llama.cpp trios hid it with `HIP_VISIBLE_DEVICES=0,1`; the live radiance engine instead enumerates all three AQL devices and ignores it ("3 devices [0:gfx1201 1:gfx1201 2:gfx1036], using 2 of 3, ignoring gfx1036") | The RTX 3090 is gone; stale `nvidia-smi` binaries and the disabled NVIDIA apt lists remain on disk but no NVIDIA PCI device exists. ### Memory | Property | Value | |----------|-------| | System RAM | **246 GiB** (`free -g` total 246, read 2026-10-18; upgraded for the Lucebox DeepSeek deployment of 2026-09-26; this page said 60 GiB until 2026-09-28 — a stale figure that survived the board swap) | | Swap | 63 GiB (`/swapfile`, `swapon` → 64 GB file, read 2026-10-18) | | /dev/shm | 124 GiB tmpfs (`df /dev/shm`, read 2026-10-18) | ### Storage | Filesystem | Size | Used | Avail | Use% | |------------|------|------|-------|------| | / (nvme0n1p2) | 1.8T | 985G | 764G | 57% | | /mnt/entropy (dm-0) | 91T | 87T | **67G** | **100%** — full; do not plan model payload here | Models live under `/home/dank/models`; the serving stack is a digest-pinned container image, not a host build tree — the llama.cpp trees on disk (`/home/dank/GitPackages/llama.cpp-dflash2`, the older `charlie-ROCmFPX`, both still present 2026-10-18) are retired-era builds. They share the self-contained ROCm 7.14 nightly toolchain under `~/.local/share/rocm-7.14.0a20260624` (also present 2026-10-18), which carries `librccl.so.1` and `hipcc`, so an RCCL-backed rebuild needs no new host packages. ### Network | Interface | Type | Speed | IP | Notes | |-----------|------|-------|----|-------| | eno1 | onboard RTL8126 5GbE | 2500 Mb/s (negotiated) | 192.168.0.235, **static** | LLM endpoint (port 7770). The address `models.yml`, Prometheus and Pi-hole all point at — preserved across the swap. | | eno2 | onboard RTL8126 5GbE, second port | 2500 Mb/s | 192.168.0.247, DHCP | **New since the swap**: cabled, both ports up at 2500 Mb/s. The old lower-metric default route was resolved — `ip route` today shows eno1 `proto static metric 100` and eno2 `proto dhcp metric 200`, so eno1 wins. Two live addresses and two default routes remain for one host | | wlp14s0 | WiFi 7 (RTL8922AE) | - | - | Renamed with the board (was `wlp8s0`); unused. | ### OS and Software | Property | Value | |----------|-------| | OS | Ubuntu 26.04 LTS (Resolute Raccoon) | | Kernel | 7.0.0-38-generic, `iommu=pt` (`uname -r`, `/proc/cmdline`, read 2026-10-18) | | Python | 3.14.4 | | ROCm userspace | Ubuntu 7.1 packages in /usr (hipcc 7.1.1, rocminfo, rocm-smi 7.1.1) | | Serving stack | radiance 1.0.13 container (`stilldeadcode/radiance@sha256:4c3f484564…`), TP=2 across both R9700s — [[frank-archon]]. The llama.cpp `fb27a525` build at `~/GitPackages/llama.cpp-dflash2/build-rdna4-rocm714` is the retired frank-medium artifact | The stale AMD-repo ROCm 6.3.3 packages (167, `~24.04`-suffixed) that used to hijack `libhsa-runtime64` were purged on 2026-09-15 — ### Active Services The active inference service is `frank-archon.service` (`systemctl is-active` → `active`, `is-enabled` → `enabled`, read 2026-10-18): radiance 1.0.13 in a host-network podman container answering `curl 127.0.0.1:7770/health` → `{"status":"ok","model":"frank-archon",…}`. See [[frank-archon]]. The services this page once called active are gone: `frank-medium.service` (llama-server, 32:33 layer split + DFlash2 drafter) is `not-found` — that rung ran 2026-09-16 → 09-20 and is documented in `frank-zealot.service` (FreeToken/CUDA) was retired with the 2026-09-15 GPU swap. Its archived unit was moved to `~/.AGENTTRASH/20260915-frank-zealot-retire/host-units/` and the vllm-radiance replica trio to `~/.AGENTTRASH/20260916-vllm-radiance-retire/` — neither path exists today (checked 2026-10-18), so the archive location is unverified. See . ## Hardware Relevance - 2× 32 GB VRAM: the live budget is stated per card, not by checkpoint size — `--vram-weights-mib 25600` / `--vram-kv-mib 5120` (`scripts/frank-archon.env:230-231`), against a card total of 31.86 GiB with 96 MiB publisher headroom (`scripts/frank-archon.env:186`). The retired frank-medium fit (27.0 GiB Q8_0 + 1.06 GiB drafter + f16 KV for 327,680 tokens at 32:33, ~6.3/~5.2 GiB headroom) is history. Either way a batch or context change needs a re-fit and not a guess. - 246 GiB system RAM is **not** headroom: the live shape pins a 43.88 GiB host pool per rank (`FRANK_ARCHON_HOST_POOL_MIB=44928` `scripts/frank-archon.env:184`) plus the 47.68 GiB n-gram/PLE table in RAM, and `free -g` showed **90 GiB available** with the engine loaded (read 2026-10-18). The frank-medium claim that "nothing in the serving path is CPU-resident" is retired with that runtime. - The iGPU stays out of the serving path by engine choice, not by an env var: radiance enumerates all three devices and uses 2 of 3, ignoring gfx1036. No `HIP_VISIBLE_DEVICES` is set in the container today (`podman inspect frank-archon`, read 2026-10-18). ## See Also - [[frank-archon]] — the active serving runbook - why the PCIe path matters, and what the swap changed - the deploy flow - [[Shared Memory Architecture Dankclaw]] — for contrast, Dankclaw's unified memory