diff options
| author | Luke Hoersten <[email protected]> | 2026-07-15 19:36:56 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-07-15 19:36:56 -0500 |
| commit | 2af69f78a6179334c6f59d4273bd72ae170fb821 (patch) | |
| tree | 5833ba2e3325c07d2abec27004745eb6eea649b1 /scrypted | |
| parent | f59cea3be9eed8d63fa44d4fd360c9c68e9318f6 (diff) | |
scrypted: temp_c on the stats line; docs: triple-buffer model + window tuning
- Scrypted per-stream stats line gains temp=<c>C from /state temp_c —
free thermal trending under streaming load.
- README Display strategy rewritten for the tear-free triple-buffer
model: why the deferred fb-index reload tears under double
buffering, why scan-tracked buffer roles beat vsync-waiting, and
the tear_guard_engaged counter.
- New 'TCP window + EMAC tuning' section documenting the measured
window raise, the EMAC-RX-pool-below-window RTO regression, and
the pool >= TCP_WND invariant; stale 'window bump is safe but
won't help' backlog text updated.
- Memory strategy updated (3 fbs, decoder writes into them directly,
stream body ring).
Diffstat (limited to 'scrypted')
| -rw-r--r-- | scrypted/scrypted-viewport.ts | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/scrypted/scrypted-viewport.ts b/scrypted/scrypted-viewport.ts index b7f2c65..9ca42e7 100644 --- a/scrypted/scrypted-viewport.ts +++ b/scrypted/scrypted-viewport.ts @@ -1487,6 +1487,7 @@ class ScryptedViewportProvider extends ScryptedDeviceBase // missed /state never wedges the logger. let painted = "?", paintedMb = "?", g2g = "?", paintedNum = -1; let recvStr = "?", decStr = "?", paintStr = "?", idleStr = "?"; + let tempStr = "?"; try { const st: any = await fetch(`http://${v.host}/state`, { signal: AbortSignal.timeout(800), @@ -1501,6 +1502,9 @@ class ScryptedViewportProvider extends ScryptedDeviceBase paintStr = `${fs.paint_min_us}/${fs.paint_avg_us}/${fs.paint_max_us}`; idleStr = `${fs.idle_min_us}/${fs.idle_avg_us}/${fs.idle_max_us}`; } + // On-die junction temp (°C); free thermal trending under + // streaming load, the hottest thing this device does. + if (typeof st?.temp_c === "number") tempStr = st.temp_c.toFixed(1); if (fs?.last_paint_event_us_low) { const nowUsLow = (Date.now() * 1000) >>> 0; const diff = (nowUsLow - fs.last_paint_event_us_low) >>> 0; @@ -1541,7 +1545,7 @@ class ScryptedViewportProvider extends ScryptedDeviceBase `${mbPerSec.toFixed(2)}MB/s sent / ${paintedMb}MB/s painted | ` + `socket.write p50=${p50}ms p95=${p95}ms max=${max}ms backpressured=${socketBackpressured} bp=${framesSampled > 0 ? ((framesUnderBp / framesSampled) * 100).toFixed(0) : "?"}% ` + `node_buf=${(nodeBufBytes / 1024).toFixed(0)}KB≈${nodeBufMs}ms/${v.maxNodeBufMb}MB cap | ` + - `recv=${recvStr}us dec=${decStr}us paint=${paintStr}us idle=${idleStr}us | g2g=${g2g}`); + `recv=${recvStr}us dec=${decStr}us paint=${paintStr}us idle=${idleStr}us | temp=${tempStr}C | g2g=${g2g}`); droppedFrames = 0; droppedOldest = 0; |
