-
Auslastung der Grafikkarten · live, jede Sekunde
+ Auslastung der Grafikkarten · live, jede Sekunde
@@ -5249,7 +5249,8 @@
// GPUs + Tokens), sonst irgendein online Worker des Node.
const group = byNode[node];
const rep = group.find(w => w.service === 'llm' && w.online) || group.find(w => w.online) || group[0];
- const btn = rep ? '
' : '';
+ const btn = rep ? '
' +
+ '
' : '';
return '
' +
'
🖥️ ' + escapeHtml(node) + btn + '
' +
rows + '
';
@@ -5331,13 +5332,16 @@
const _cardLoadStreams = new Map(); // instanceId → {node, gpus, single}
const _cardLoad = new Map(); // node|uuid → {node, index, name, util, ..., hist: []}
let _cardLoadTimer = null;
- function openCardLoad() {
+ /** onlyNode: nur diese Box (Button in der Compute-Flotte); leer = alle */
+ function openCardLoad(onlyNode) {
document.getElementById('card-load-modal').style.display = 'flex';
+ document.getElementById('card-load-scope').textContent = onlyNode ? ' · ' + onlyNode : '';
_cardLoad.clear();
_cardLoadStreams.clear();
const byNode = {};
for (const w of workers) {
if (!w.online || !['llm', 'whisper', 'f5tts', 'voxtral'].includes(w.service)) continue;
+ if (onlyNode && w.node !== onlyNode) continue;
(byNode[w.node] = byNode[w.node] || []).push(w);
}
for (const [node, list] of Object.entries(byNode)) {