docs(iommu): record the executed flip to iommu=pt and its measured cost of nothing
Window 01:24-01:35. Byte-identical A/B (rebuild proved it: same 1,287,656 B corpus, same billed token counts 59,024 / 21,568): cold prefill 1,585.1 -> 1,616.0 t/s (+2.0 %), warm 208,531 -> 214,131, needle hit/hit both boots. The 13-16 % that justified amd_iommu=off since 2026-09-11 does not exist on this host; the decode delta (-9.7 %) is instrument noise -- three repeats of one request on the same boot gave 31.8/46.9/47.8 t/s. NPU precondition restored: amdxdna bound 0000:c6:00.1 (driver 0.7.0, firmware amdnpu/17f0_11/npu_7.sbin), group 26 identity, PASID width 10, /dev/accel/accel0 root:render with dank in render. No endpoint deployed, so frank-npu stays retired -- only its rationale changes. Gates: 0 failed units, 32 groups (31 identity + the SD reader's DMA quirk), iGPU c5:00.0 identity with ATS, dragoon ledger unchanged (74.1 GiB, no clamp, listening at 39.8 s). Deferred on purpose: the pp_dpm_fclk pin (changes iGPU timing for everyone, nothing co-runs yet) and PerfOpt (7.0.0-38 has zero perfopt symbols, 26.04 caps at 7.0.0-38.38). Re-keyed: decision record banner/front matter/verification/revert + new execution section, frank-npu rationale, AGENTS key lesson, both index pages.
This commit is contained in:
@@ -1107,17 +1107,17 @@ linked runbooks.
|
||||
times (`RuntimeError: No HIP GPUs are available`).
|
||||
- SearXNG outbound traffic must stay on the Gluetun tunnel; do not move its
|
||||
ports off the gluetun service.
|
||||
- `amd_iommu=off` on Dankclaw (adopted 2026-09-11 on the vendor's 13–16 %
|
||||
prefill figure, never measured here) retires the XDNA2 NPU: the driver's
|
||||
SVA/PASID bind needs an enabled IOMMU (`/dev/accel/accel0` fails `err=-19`).
|
||||
That trade is on an expiring path: **AMD PerfOpt** (iommu tree 2026-09-24,
|
||||
Linux 7.4) makes the IOMMU skip GPA→SPA translation for the *privileged iGPU*
|
||||
while staying fully armed for every other device — and it arms only when the
|
||||
iGPU is already in the identity domain, so the next boot-line window is
|
||||
`iommu=pt` with the NPU usable, not `off`. PerfOpt buys 2–4 % back on a Strix
|
||||
Halo desktop (18–23 % on Strix Point laptops); it is not installable here
|
||||
yet (Ubuntu 26.04 caps at `7.0.0-38`). Research in
|
||||
`serverAppConfigs-docs/LLM/dankclaw-iommu-translation-off.md`.
|
||||
- Dankclaw boots **`iommu=pt`** since 2026-10-18. The boot line is tracked in
|
||||
`dankclaw/host/grub` and moves ONLY through `scripts/set-dankclaw-bootline.sh`
|
||||
(diff, install, `update-grub`, verify `grub.cfg`, `--reboot`) — never by
|
||||
hand-editing `/etc/default/grub`. It replaced `amd_iommu=off` (2026-09-11),
|
||||
adopted on the vendor's 13–16 % prefill figure and never measured here: the
|
||||
local A/B on byte-identical traffic says identity mode costs **nothing**
|
||||
(+2.0 %, 1,616 t/s cold prefill), so the XDNA2 NPU returned for free —
|
||||
`amdxdna` binds `c6:00.1` (PASID width 10, identity group 26) and the old
|
||||
`err=-19` only ever asked for an enabled IOMMU. **AMD PerfOpt** (iommu tree
|
||||
2026-09-24, Linux 7.4) still skips the page walk outright for the privileged
|
||||
iGPU, but it arms only in the identity domain and 26.04 caps at `7.0.0-38`.
|
||||
- Rootless Quadlet containers run with `--replace --rm`: `podman logs` covers
|
||||
only the CURRENT instance; history across recreations lives in
|
||||
`journalctl --user -u <name>.service`. Read rootless storage WITHOUT sudo
|
||||
|
||||
Reference in New Issue
Block a user