Files
enne2 2a0020ca91 Strata dashboard plasmoid v1.2: barre a soglie e velocita decode/prefill
- card GPU con barre progressive: VRAM (informativa), utilizzo 60/85 %,
  temperatura 75/85 C, potenza su budget 350 W (ambra 70 %, rosso 90 %)
- velocita del motore: DEC (generazione) e PRE (prefill) in tok/s, live
  durante la generazione, ultima richiesta da fermo (badge LIVE/ULTIMA);
  semantica inversa: verde sopra la nominale, ambra fra 50 % e nominale
- card servizio + controllo unificata con switch load/unload nativo e
  stato che si chiude sulla fase osservata
- MetricBar condiviso con levelColor()/speedColor() e soglie in testa al QML
- README: requisiti, campi del control plane, tabella soglie, limiti del box
- avatar pixel-art 512x512 in assets/repository-avatar.png
2026-10-25 16:12:52 +01:00

3.7 KiB

KDE Strata Dashboard Plasmoid

Plasmoide per KDE Plasma 6 che mostra lo stato del servizio di inferenza Strata (Qwen3.8-Flash-Next IQ2_XS servito su NVIDIA L40S) leggendo il control plane HTTP del servizio. Non parla mai direttamente con il motore: lo 8082 di Strata ascolta solo su 127.0.0.1 della macchina che lo ospita, quindi tutte le letture passano dal control plane.

Cosa mostra

  • fase del servizio con badge colorato: caricato / generazione / caricamento / scaricato / fermo / non raggiungibile;
  • VRAM usata e totale (barra indaco, informativa: il modello occupa quasi tutta la GPU);
  • utilizzo, temperatura e potenza della GPU come barre progressive che si riempiono in proporzione al valore e cambiano colore alle soglie;
  • velocità del motore: DEC (generazione, tok/s) e PRE (prefill, tok/s), live durante la generazione e riferite all'ultima richiesta quando il motore è fermo (badge LIVE / ULTIMA);
  • modello: alias, tipo di KV, contesto, concorrenza, disponibilità vision;
  • switch carica/scarica nativo (POST /load, POST /unload?wait=0) con stato PENDING che si chiude sulla fase osservata, non su un timer.

Requisiti

  • KDE Plasma 6;
  • curl e bash;
  • chiave del control plane in ~/.config/strata-control/control.key (0600);
  • control plane raggiungibile su STRATACTL_API (default http://172.30.150.224:18090).

Installazione

kpackagetool6 -t Plasma/Applet -i .

Per aggiornare un'installazione esistente:

kpackagetool6 -t Plasma/Applet -u .

Aggiungi poi Strata al desktop o a un pannello dalle impostazioni dei widget Plasma.

Backend

  • contents/scripts/status.sh: GET $STRATACTL_API/status con header X-API-Key, stampa il JSON su stdout (il widget lo legge con P5Support.DataSource, intervallo 4 s).
  • contents/scripts/action.sh load|unload: POST in background con setsid ed exit immediato, così il polling del widget non resta bloccato durante le operazioni lunghe.

Campi usati dal widget:

Campo di /status Uso
phase, service.* badge di fase, tooltip
model.live.tok_s, model.live.prefill_tok_s_mean barre DEC/PRE live
model.last_timings.predicted_per_second, .prompt_per_second DEC/PRE dell'ultima richiesta
model.alias, kv, ctx, concurrency, vision card servizio
gpu.mem_used_mib/mem_total_mib/mem_pct, util_pct, temp_c, power_w, name card GPU

Il control plane deve inoltrare model.live e model.last_timings: la versione del 2026-10-25 legge live da /metrics (cache 3 s) e passa last_timings da /v1/status. Senza quei campi le barre DEC/PRE restano grigie.

Soglie e scale

Tutte in testa a contents/ui/main.qml, facili da ritoccare:

Grandezza Fondo scala Ambra Rosso
Utilizzo GPU 100 % 60 % 85 %
Temperatura GPU 100 °C 75 °C 85 °C
Potenza GPU 350 W (TDP L40S) 70 % del budget 90 % del budget
Decode (generazione) 120 tok/s < 40 tok/s (nominale) < 20 tok/s
Prefill 5000 tok/s < 3000 tok/s (nominale) < 1500 tok/s

Per le due velocità la semantica è inversa rispetto ai carichi: alto è bene, quindi verde sopra la nominale, ambra fra il 50 % e la nominale, rosso sotto. Grigio = valore non disponibile (motore scarico, sensore assente).

Note

  • Avatar del repository in assets/repository-avatar.png, immagine pixel-art generata con Antigravity (modello immagine Gemini).
  • Il widget occupa un box desktop da 324x308 pixel logici: card e spaziature sono tarate su quella altezza. Se il containment lo rimpicciolisce il footer SYNC viene tagliato.

Licenza

MIT. Vedi LICENSE.