# frank-primary.service — R9V radiance-vLLM endpoint (unsloth # Qwen3.8-Flash-Next Q8_0, MTP4, TP=2, tiered experts, 6-shard payload) on # the 2x R9700 pair, dankserver :7770. 2026-09-27 cutover from the # uncensored IQ4_XS payload (its state dir stays on disk as rollback). # # Replaces the llama.cpp frank-primary unit (same port, same served alias; # harness models.yml unchanged in id, retuned for the 131072 window). The # serve script drives the R9V fork's own launcher through the docker->podman # shim and then waits on the container, so a crashed engine is a nonzero # ExecStart and Restart=on-failure is real. # # WHY A ROOT UNIT (not a rootless quadlet): the tiered-expert shape pins tens # of GiB of host RAM (the UVA expert host copy plus the 16 GiB PLE pinned # reserve). Pinned pages are charged against RLIMIT_MEMLOCK; dank's login # session on this host carries 8 MiB and a user quadlet is capped by the user # manager's own hard limit — raising that means restarting user@1000.service # and bouncing every user container on the host. A root unit grants # LimitMEMLOCK=infinity to the dank process via PID1, and the image stays in # dank's rootless podman storage (the shim drives podman as dank). [Unit] Description=frank-primary — R9V radiance-vLLM Qwen3.8-Flash-Next Q8_0 on 2x R9700 After=network-online.target Wants=network-online.target [Service] User=dank Group=dank # The tiered-expert offloader pins host RAM; an RLIMIT_MEMLOCK smaller than # the pinned set fails the load mid-start. PID1 grants infinity here — # parity with the fleet's other LLM units. LimitMEMLOCK=infinity Environment="FRANK_PRIMARY_ENV_FILE=/home/dank/serverAppConfigs/scripts/frank-primary.env" ExecStart=/home/dank/serverAppConfigs/scripts/serve-frank-primary.sh # systemd stop: wait alone cannot stop the container child; stop it # explicitly. vLLM 0.26 drains gracefully on SIGTERM. ExecStop=/usr/bin/podman stop -t 120 frank-primary-r9v # Boot cost: the launcher's preflight doctor (~1 min) after a warm page # cache; cold (post-reboot) payload page-in of ~175 GiB dominates. TimeoutStartSec=1800 Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target