log: frank-medium restored after orphaned merge-build server held both R9700s
This commit is contained in:
1 parent
59c76035d3
commit
cfabe07959
1 file changed
+36
@@ -905,3 +905,39 @@ timestamp: 2026-09-14
|
|||||||
If you bench from an agent session, the session owes the fleet a
|
If you bench from an agent session, the session owes the fleet a
|
||||||
`health 200` before it ends. Consider making the bench harness
|
`health 200` before it ends. Consider making the bench harness
|
||||||
self-restoring.
|
self-restoring.
|
||||||
|
|
||||||
|
## 2026-09-18 (midday) — frank-medium down: orphaned merge-build server held both R9700s
|
||||||
|
|
||||||
|
- **Symptom:** connection refused on `192.168.0.235:7770`. Unit was
|
||||||
|
`inactive`, `enabled`, unmasked (`/etc/systemd/system/frank-medium.service`
|
||||||
|
symlinked to the repo unit, not `/dev/null`), `NRestarts=0` — a clean
|
||||||
|
stop, not a crash.
|
||||||
|
- **Not the morning's case:** the GPUs were **not** idle. `rocm-smi` read
|
||||||
|
15.5 GiB on GPU0 and 17.1 GiB on GPU1. `ps` named the holder: PID
|
||||||
|
2519965, `llama-server` from `third_party/llamacpp/build-merge`
|
||||||
|
(gitignored scratch), orphaned at PPID 1, bound `127.0.0.1:17770`,
|
||||||
|
`-c 16384 --split-mode layer --tensor-split 1,1 -ngl 99 -t 16`.
|
||||||
|
- **Timeline (sudo journal + `/tmp/layersplit.log`):** `start` 08:14:02 →
|
||||||
|
`stop` 09:19:44 → merge build spawned 09:19:47 → log reached
|
||||||
|
`model loaded` / `listening` at 09:20 → nothing after. The merge-build
|
||||||
|
load validation passed; the cleanup-and-restore half never ran.
|
||||||
|
- **Why prod could not come back:** the 35:30 split needs ~30.8 GiB on
|
||||||
|
ROCm0 and ~28.9 on ROCm1. The stray owned roughly half of each card, so
|
||||||
|
`systemctl start` would have died on allocation, not on config.
|
||||||
|
- **Proof it was abandoned, not parked:** `/proc/<pid>/stat` utime+stime
|
||||||
|
identical across a 10 s sample (frozen CPU), zero established
|
||||||
|
connections to `:17770`, loopback-only bind, 3h05m since last log write.
|
||||||
|
- **Restore:** preserved the test log to `/tmp/layersplit.log.preserved-20260918`,
|
||||||
|
`kill 2519965` (exited in <1 s, both cards → 60 MiB baseline), then
|
||||||
|
`systemctl start frank-medium`. Health 503 → 200 in ~20 s (payload warm
|
||||||
|
in page cache). `/proc/MainPID/cmdline` confirms deployed geometry
|
||||||
|
(`--tensor-split 35,30`, ctx 393216, 2 slots, `--flash-attn on`,
|
||||||
|
`--spec-type draft-mtp`); steady state ROCm0 32.9 GiB / ROCm1 30.7 GiB.
|
||||||
|
Real completion returns verbatim with `reasoning_content` and
|
||||||
|
spec-decode engaged: `draft_n 39 / accepted 35` (89.7 %), tg 40.6 t/s.
|
||||||
|
Fingerprint `b11009-fb27a525d` = the pinned runtime.
|
||||||
|
- **Lesson:** "GPUs idle" is a check, not an assumption. A stopped prod
|
||||||
|
unit plus busy cards means something else took them — find the holder with
|
||||||
|
`ps`/`ss` and prove it abandoned (frozen CPU ticks, no conns) before
|
||||||
|
reclaiming. Scratch servers on loopback are invisible to the endpoint
|
||||||
|
monitor, so they strand the fleet instead of failing loudly.
|
||||||
Reference in new issue
Block a user