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

Abierto Apto para principiantes
#5,484 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
66/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
cpp

Línea de trabajo

Empieza rastreando la tarjeta de carga de la GPU y la tabla Recent requests en la GUI. Después, comprueba cómo muestran los campos de telemetría descritos en el issue. Actualiza la etiqueta de carga de la GPU o añade una explicación, y oculta la columna VRAM HIT RATE cuando falte hit_rate o explícalo. El trabajo estará terminado cuando la tarjeta describa con precisión el tiempo de actividad y las filas de Mac ya no muestren un guion sin explicación.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
C++
Estrellas
11.6k
Forks
1k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Niko1221/Strata

Todos los issues de Niko1221/Strata

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.