[GUI] Monitor: on a Mac "GPU load" is time busy, not compute in use; VRAM HIT RATE is always a dash

Aperta Adatta ai principianti
#5,484 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 4 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
66/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
cpp

Direzione di ricerca

Inizia tracciando la scheda del carico della GPU e la tabella Recent requests nella GUI, poi verifica come visualizzano i campi di telemetria descritti nell’issue. Aggiorna l’etichetta del carico della GPU o aggiungi una spiegazione, e nascondi la colonna VRAM HIT RATE quando hit_rate è assente oppure spiegala. Il lavoro è completato quando la scheda descrive accuratamente il tempo di attività e le righe Mac non mostrano più un trattino senza spiegazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Area
[GUI] (the desktop app / web Monitor)

What happened
On a Mac (M5 Max, 40 GPU cores, Strata 0.2.12, engine 0.1.58-metal, Qwen3.8-Flash-Next UD-Q4_K_XL) the Monitor's GPU load card sits at 95-99% for as long as requests keep coming, in both phases:

  • reading a prompt (~1,600 tok/s)
  • decoding (~85 tok/s)

It reads like "all 40 cores are maxed out", but it isn't that. serve/telemetry.py (_Metal, from #2360) shows IOKit's Device Utilization %, which is the share of time the GPU had work scheduled, not the share of its compute in use. ioreg -r -d 1 -c IOAccelerator gives the same value (95) while the engine decodes. Decode on this machine is bound by memory bandwidth, so the ALUs mostly wait for weights, yet the card still says 99%. This is the same definition as NVML's utilization.gpu ("time a kernel was running"), so the number is correct. Only the label promises more than the number means.

The Recent requests table's VRAM HIT RATE column has the same kind of problem. On a Mac it is – on every row, because the Metal engine reports no expert-cache lookups (hit_rate is None in /metrics: unified memory, every expert is mapped). The column takes space and suggests something is missing.

Expected
The card says what it measures, and Mac-only blanks are explained or hidden.

Proposal (small, GUI only)

  1. Rename the card to GPU busy, or keep the name and add a subtitle/tooltip: "share of time the GPU had work scheduled; not how much of its compute is in use". This applies to NVML and amdgpu as well, since they use the same definition.
  2. Hide the VRAM HIT RATE column when no row in the table has a hit_rate (or when the backend is metal), or give it a tooltip: "unified memory: every expert is mapped, so there is no VRAM cache to hit".
  3. Optional: next to the busy %, show a load figure that tells "busy" apart from "saturated" during decode. One option is the achieved weight bandwidth (bytes of active weights read per token × decode tok/s) against the chip's peak. Another is GPU power or frequency once #5016 lands.

Related

  • #2360: added the Mac reader and gpu_note
  • #5457: gpu_note is never shown on a Mac, so temp, Power and PCIe are silent dashes
  • #5016: Apple Silicon GPU temp and power without root

These three cover temp, power and PCIe; this issue covers only the GPU load label and the hit-rate column.

Lingua principale
C++
Stelle
11.6k
Fork
1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Niko1221/Strata

Tutte le issue di Niko1221/Strata

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.