mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-20 13:38:11 +02:00
Moniteur : un seul nvidia-smi pour tous les onglets, aucun pour un onglet caché
Chaque onglet ouvert (et chaque téléphone) interrogeait /api/vram toutes les 3 s, et chaque requête lançait son propre nvidia-smi — y compris depuis un onglet en arrière-plan que personne ne regarde, pendant que llama-server génère. Rien de tout cela ne touche au modèle : seules les jauges sont concernées. - gpuStatsCached : lecture partagée de 2 s, verrou tenu pendant la requête pour que des appels simultanés attendent la même lecture. nvidia-smi introuvable (Mac, CPU seul) mémorisé une minute ; une autre erreur se retente au délai normal. - Seul handleVram passe par le cache. Le déchargement (lecture « avant » et gpuSettle) garde des lectures fraîches : deux valeurs égales servies par le cache feraient conclure gpuSettle à tort. Le cache est vidé après un déchargement. - UI : statut, VRAM et RAM ne sont plus interrogés dans un onglet caché ; lecture immédiate au retour. - Tests : cache (réutilisation, erreur, binaire absent, appels simultanés) et échantillonneur du déchargement qui contourne le cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3dff7e0e04
commit
4f34694400
5 files changed
+214
-19
No files matched your search
@@ -770,6 +770,14 @@ async function send(){
|
||||
fail('échec de l\'envoi — réessaie');
|
||||
}
|
||||
loadAll();
|
||||
setInterval(loadStatus, 5000);
|
||||
setInterval(loadVram, 3000);
|
||||
setInterval(loadRam, 3000);
|
||||
// Jauges et pastille d'état : rien à rafraîchir dans un onglet que personne ne
|
||||
// regarde. Chaque tic lançait sinon un nvidia-smi côté serveur, pour chaque
|
||||
// onglet ou téléphone laissé ouvert, pendant que le modèle génère. Au retour de
|
||||
// l'onglet, une lecture immédiate remet tout à jour.
|
||||
const pollVisible=(fn)=>()=>{ if(!document.hidden) fn(); };
|
||||
setInterval(pollVisible(loadStatus), 5000);
|
||||
setInterval(pollVisible(loadVram), 3000);
|
||||
setInterval(pollVisible(loadRam), 3000);
|
||||
document.addEventListener('visibilitychange', ()=>{
|
||||
if(!document.hidden){ loadStatus(); loadVram(); loadRam(); }
|
||||
});
|
||||
Reference in new issue
Block a user