- 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
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) ePRE(prefill, tok/s), live durante la generazione e riferite all'ultima richiesta quando il motore è fermo (badgeLIVE/ULTIMA); - modello: alias, tipo di KV, contesto, concorrenza, disponibilità vision;
- switch carica/scarica nativo (
POST /load,POST /unload?wait=0) con statoPENDINGche si chiude sulla fase osservata, non su un timer.
Requisiti
- KDE Plasma 6;
curlebash;- chiave del control plane in
~/.config/strata-control/control.key(0600); - control plane raggiungibile su
STRATACTL_API(defaulthttp://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/statuscon headerX-API-Key, stampa il JSON su stdout (il widget lo legge conP5Support.DataSource, intervallo 4 s).contents/scripts/action.sh load|unload:POSTin background consetsided 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
SYNCviene tagliato.
Licenza
MIT. Vedi LICENSE.