Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
393 changes: 393 additions & 0 deletions .agents/benchmark-record.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions .agents/benchmarking.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ sudo nvidia-smi -lgc 2100 # pin, before the first leg
sudo nvidia-smi -rgc # release, after the last one
```

**This works on the host path only.** Inside an `rc` lease `nvidia-smi -lgc`
returns `LGC_RC=4`, "The current user does not have permission to change
clocks", even as root, measured 2026-08-19 on `dgx:gpu0` in three jobs. Fleet
devices are reachable by lease only, so for them the SM clock can be SAMPLED and
not pinned, and a pairing may be refused on within-run spread with no lever to
fix it. Read
[`environment.md`](environment.md) before you plan a paired series.

Pinning is a **shared-host mutation**. Never run `-lgc` or `-rgc` while another
session holds `$HOME/gpu.lock` — it silently reprices their in-flight
measurement, which is the very defect this section exists for. Take the lock,
Expand Down
68 changes: 65 additions & 3 deletions .agents/environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,17 @@ reimage, so host-side oracle work needs `sudo -n docker run` against
`vllmcpp-build:gb10` or `nvidia/cuda:13.0.1-devel-ubuntu24.04`, reached over
`ssh`, which is the bypass. **The sentence this paragraph used to carry, "no
vLLM leg of any row can currently run on `dgx.casa` by a lease-compliant path",
is FALSIFIED for the BUILD step and still holds for a MODEL RUN.** On 2026-08-18
is FALSIFIED, for the BUILD step and for a MODEL RUN alike.** On 2026-08-18
two `rc run` jobs built the pin from source inside a lease, installed the wheel,
imported it, and reported `cuda True NVIDIA GB10`
([#1185](https://github.com/mudler/vllm.cpp/issues/1185), and "The pinned oracle
builds inside a lease on `dgx:gpu0`" further down). Nobody has run a model that
way, so no oracle-side MEASUREMENT is unblocked yet. Read the old reason
builds inside a lease on `dgx:gpu0`" further down). On 2026-08-19 the same pin
then SERVED: `vllm serve` on a 52 GiB bf16 checkpoint, from a lease, no `ssh` and
no container image, three clean benchmark legs (`.agents/benchmark-record.md`,
`BENCH-QWEN38-27B-BF16` c1, and "A model DOES run inside a lease" below). So
oracle-side MEASUREMENT from a lease is no longer blocked; what is still
unreachable is the image-based path SGLang needs
([#1265](https://github.com/mudler/vllm.cpp/issues/1265)). Read the old reason
carefully before you quote it, because it was never the worker's missing
toolchain. "The lease carries bytes, and the exec bit is a mount option" below
measures staged content starting under the dynamic loader and after a copy to
Expand All @@ -145,6 +150,63 @@ already has one. This row measured `dgx`'s worker and adds the part that turns
an open gap into a blocker for the parity gates, which is that the ORACLE VENV
is also unreachable from a lease.

### Clock pinning does NOT work inside an `rc` lease, measured 2026-08-19

[#1354](https://github.com/mudler/vllm.cpp/issues/1354) owns this.

`nvidia-smi -lgc` is refused inside the leased worker, in a job running as
**root**:

```text
$ nvidia-smi -lgc 2190
The current user does not have permission to change clocks for GPU 0000000F:01:00.0.
LGC_RC=4
```

Reproduced in three separate `rc run` jobs on `dgx:gpu0` on 2026-08-19
(`.agents/benchmark-record.md`, `BENCH-QWEN38-27B-BF16` c1/c8). The container is
root but lacks the capability the driver requires.

**This outlives one campaign, and it is a records defect as much as a capability
one.** [`benchmarking.md`](benchmarking.md) instructs "Pin the clocks before
measuring, under the lock", and **every clock-pinned figure in this
repository's records was taken over the retired host + `ssh` + `flock` path**.
The migration to `rc` leases silently removed clock pinning and no record said
so. Same class as [#1265](https://github.com/mudler/vllm.cpp/issues/1265): a
capability the records assume, which the current access path does not provide.

**Consequence for anyone measuring from a lease.** The SM clock can only be
SAMPLED, never pinned. `tools/bench/gpu_clock_state.py` still works and is the
only attribution such a number carries. Plan for its within-run rule to fail:
the 2026-08-19 series recorded within-run spreads of 12.92% to 26.36% across
nine windows on a thermally throttling GB10, against the 5% ceiling, and
`gpu_clock_state compare` therefore returned `PAIRING_VERDICT=DISCARD` on every
c1 pairing even though the cross-arm rule passed perfectly. Two arms measured in
a lease may not be dividable, so budget for absolutes and say so in advance
rather than discovering it after the GPU time is spent.

**A model DOES run inside a lease.** The same series ran the pinned oracle
`0.1.dev1+g555967922` as a server on a 52 GiB bf16 checkpoint from a lease, no
`ssh` and no container image, and it served three clean benchmark legs. That
retires the "nobody has run a model that way" reading of
[#1185](https://github.com/mudler/vllm.cpp/issues/1185) recorded above. What is
still unreachable is the image-based path SGLang needs
([#1265](https://github.com/mudler/vllm.cpp/issues/1265)).

**And one instrument rule, paid for in the same series.** A guard whose
threshold sits inside the guarded configuration's own operating point
manufactures the finding it was meant to detect. A 12,000 MB `MemAvailable`
watchdog killed a healthy `vllm serve` 18 s after it reached `/health`, which
read as "the denominator collapses in a lease" — and the arithmetic refuted it:
`0.85 x 122,502 MB` reserved by design predicts 12,223 MB free against an
observed floor of 11,917 MB, a 306 MB match, and the same server later ran three
clean legs at a ~7,500 MB steady state. **A tripped guard is evidence about the
GUARD until its threshold is shown to sit outside the guarded thing's operating
point.** Predict the number from the configuration before believing the verdict,
and keep instrument thresholds strictly apart from engine knobs: moving the
floor changes nothing about what is measured, and moving
`gpu_memory_utilization` changes what the number means.

### The lease carries bytes, and the exec bit is a mount option, measured 2026-08-17

Probed with two `rc run -d dgx:gpu0 --max-runtime 3m` jobs,
Expand Down
Loading
Loading