Edge AI co-tenancy
not reportedTwo questions. Are the RAN and the AI tenant sharing this accelerator without hurting each other, and how many real subscribers are actually on? Both answers are at the top; everything below is the evidence behind them.
Are they sharing without hurting each other?
swept · mps.all-clients-managed live · mps.in-scope-clients-managedAs last swept
expired · cannot tell which bootThe GPU as the stored sweep recorded it. This says nothing about the GPU now, and its process identifiers can no longer be resolved.
Reading the record…
The build-snapshot artefacts have not been read yet.
Source /artefacts/mps-sweep-2026-08-03-livebox.json
Right now
live, every 5 sThe MPS control plane as this browser can read it, this second. A SCOPED gate: it covers the clients that could join the active server, and names every tenant it does not cover.
Unknown
Scope The scope of this gate could not be read, so which clients it even covers is unknown.
Nothing has been read from the live exporter yet, so whether this GPU is under MPS control right now is unknown. It is not a pass.
To green Nothing is wrong with the GPU yet — nothing has been asked. This resolves as soon as the co-tenancy exporter answers a poll.
MPS runs ONE SERVER PER UID at a time on a device. Only clients of the active server’s uid can join it; a client of any other uid is queued on a pending list and BLOCKS rather than failing. The CUDA workloads on this box span several uids, so at most one group can be managed at any instant — a gate asking "is every client managed" could never pass, and trying to satisfy it by restarting foreign tenants into MPS hangs them.
- Control daemon
- unknown — could not probe
- Managed clients
- unknown — not zero
- Server uid
- unknown — not uid 0
- Unmanaged clients
- unknown — not zero
- Out of scope
- unknown — the scope was not read
A thread cap PROVISIONS, it does not RESERVE. CUDA_MPS_ACTIVE_THREAD_PERCENTAGE limits how many SMs a client may use; NVIDIA’s documentation is explicit that kernels from different clients may still execute on the same SM. Every client being managed means every client has a cap — it is not hard isolation and it is not a guaranteed share. MIG hard-partitions; MPS shares with a cap.
Source GET /api/cotenancy/api/v1/cotenancy
Only the live plane has an answer The stored sweep could not be read, so there is nothing to compare. The live plane on the right is the only plane that can answer whether this GPU is under MPS control, and it is the one to read.
How many real subscribers are on?
live, every 2 sNo poll has completed yet on this page load. Nothing is asserted.
A UE holding an IPv4 address on a tunnel interface that exists in the kernel right now. Not a process that exists, and not the AMF's registered-UE table.
This is not the simulated demand counter. That number is further down this page, under its own heading, and the two must never be added.
Source GET /api/ran/ue/attached
The co-tenancy measurements
Build snapshot — not a live readingLDPC decode against the slot budget
not readReading the artefact…
MPS thread caps
config/cotenancy/mps-shares.yamlDeclared per-workload CUDA_MPS_ACTIVE_THREAD_PERCENTAGE shares. Two profiles, because this box runs no Aerial DU, so the paper-faithful split cannot be honoured here.
| Workload | Paper | This box |
|---|---|---|
| cuphy-du-l1 | 60% | 0% |
| sr-worker | 20% | 50% |
| tvws-sensing | 10% | 20% |
| sr-worker-quality | 5% | 20% |
| ollama-llm | 5% | 10% |
The live exporter has not reported a managed client list, so which caps are actually in force is unknown. It is not "none".
scripts/cotenancy/start-mps.sh reads this file, but it currently starts nvidia-cuda-mps-control and applies none of these values. A declared cap that is never set is a plan, not a control, and this page will not render it as one.
A thread cap PROVISIONS, it does not RESERVE. CUDA_MPS_ACTIVE_THREAD_PERCENTAGE limits how many SMs a client may use; NVIDIA’s documentation is explicit that kernels from different clients may still execute on the same SM. Every client being managed means every client has a cap — it is not hard isolation and it is not a guaranteed share. MIG hard-partitions; MPS shares with a cap.
The isolation gate
mps.all-clients-managedWas the GPU free of processes outside the MPS server for the whole run?
- Rule
- mps.all_clients_managed must be true
- As last swept
- artefact not read
- Right now
- unknown — the live census could not be read, not zero
- Severity
- blocking
- Blocks
- that this run demonstrates isolation between the RAN and AI clients
What each tenant is taking right now
Live pollRAN
n78 TDD 3.6 GHz 50 MHz PLMN 342-99- gNB
- unknown
- Core
- --
- NGAP
- --
- UPF
- unknown
- Demand DL / UL
- -- / -- not reported
Not reported. An empty bar here would read as "no CPU is being used", which is a measurement nobody took.
AI
SR worker unknown SR and sensing on the same GPU- SR worker
- SR worker unknown
- Model
- --
- Compute
- --
- Sensing
- Sensing unknown
- Frames/s
- --
- Latency
- --
- Dropped
- --
- Channel 21
- Unknown
- Model conf
- --
- Backhaul
- --
Research preview, not a spectrum-access authority. On the 28-channel UHF survey of
2026-08-04 (560 records, 10 occupied / 15 vacant, ground truth from measured physics) this
checkpoint detected 2 of 10 live multiplexes and called 48 of 300 vacant records occupied, at 0.93 to 0.99 confidence. With the physics detector wired in — same unchanged checkpoint, one process,
differing only in whether a calibrated control floor is passed — that becomes 10 of 10 multiplexes and 0 of 15 vacant channels called
occupied. Not clean yet: UHF 28 still asserts OCCUPIED on 8 of 20 records, and that threshold was not moved. This caveat used to blame the threshold for
calibration on synthetic noise; a measured receiver-noise null falsified that on
2026-08-05 — real receiver noise tops out at comb z = 2.289 against the synthetic
2.19, and 0 of 300 records reach the 3.5 threshold. The firing arrives
through the antenna and its cause is now open: a genuine emission below
the energy floor, which would mean the ground truth needs revising rather than the
detector, or front-end intermodulation. The RX-gain sweep that separates them has not been
run. The earlier “40 of 80” figure came
from a 2026-07-29 set that was entirely occupied, on which answering
OCCUPIED unconditionally also scores 80 of 80 — it measured no discrimination. Rollout is
opt-in and this service was not restarted: with no calibrated control floor configured the
engine falls back to the legacy CNN verdict and reports occupancy_source: cnn-confidence, so the channel state above
is the classifier’s unless a floor is set. Model confidence is not accuracy: high
confidence has been measured on wrong answers. PAWS grant state is the authority.
- Status
- unknown
- Waiver
- none
Accelerator
nvidia-smi · every tenant combinedUtilisation, not framebuffer occupancy. The DCGM framebuffer counters do not exist on GB10, so there is no memory-occupancy number to show and none is invented. This gauge is the whole accelerator, including any tenant outside the MPS server — which is exactly why the isolation gate above cannot attribute it.
Attached subscribers
Count unknown| IMSI | TYPE | ATTACHED | IP | TUNNEL | PROFILE | DL Mbps | UL Mbps |
|---|---|---|---|---|---|---|---|
| ran-manager did not answer. How many UEs are attached is unknown — this is not zero, and this table is not a statement about the network. | |||||||
Simulated load — a demand model, not subscribers
Never add this to the attach countDemand generator
subscriber-simNo poll has completed yet on this page load.
The length of an in-memory list of generated UE records, producing synthetic demand.
No NAS registration, no PDU session, no tunnel, no radio. Nothing in the 5G core has heard of these.
Source GET /api/subscribers/status
This counter is real work — the generator really is holding that many records and really is producing that much synthetic demand. What it is not is an attach. It used to be printed elsewhere in this console under the label "Attached UEs" while three real UERANSIM UEs were on tunnels and the same payload reported a real count of zero.
Mode control
mode-controller degrade below 9 Mbps · recover above 12 MbpsForce locks the controller. Reset returns it to autonomous hysteresis, which is trace-driven unless real UPF metrics have been started.
| TIME | EVENT |
|---|---|
| Nothing has changed since this page was opened. | |