mirror of
https://git.sync.wtf/troed/oc-ls-stats.git
synced 2026-08-31 09:43:38 +03:00
fix: v0.0.48 - track max n_decoded globally to handle slot disappear/reappear
- Use generateMaxDecoded to track highest n_decoded seen across all polls - Detect resets when nd drops below max (even if slot disappeared and reappeared) - Simplified logic: only compare against max, not per-slot baseline - Removed generateSlotId tracking (no longer needed)
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@troed/oc-ls-stats",
|
||||
"version": "0.0.47",
|
||||
"version": "0.0.48",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./tui": {
|
||||
|
||||
@@ -50,6 +50,7 @@ type TrackerState = {
|
||||
generateSlotId: number | null
|
||||
generateCapturedDecoded: number | null
|
||||
generateStartAt: number
|
||||
generateMaxDecoded: number
|
||||
}
|
||||
|
||||
function estimateStreamTokens(delta: string) {
|
||||
@@ -271,6 +272,7 @@ const tui: TuiPlugin = async (api) => {
|
||||
generateSlotId: null,
|
||||
generateCapturedDecoded: null,
|
||||
generateStartAt: 0,
|
||||
generateMaxDecoded: 0,
|
||||
}
|
||||
const [version, setVersion] = createSignal(0)
|
||||
const [clock, setClock] = createSignal(Date.now())
|
||||
@@ -390,34 +392,26 @@ const tui: TuiPlugin = async (api) => {
|
||||
const now = Date.now()
|
||||
const nd = generateSlot.next_token?.[0]?.n_decoded ?? 0
|
||||
|
||||
debug(`gen slot=${slotId} nd=${nd} prevNd=${tracker.generateCapturedDecoded} same=${tracker.generateSlotId === slotId} tps=${tracker.lastGeneratedTps}`)
|
||||
|
||||
if (tracker.generateSlotId === slotId) {
|
||||
if (tracker.generateCapturedDecoded !== null) {
|
||||
if (nd < tracker.generateCapturedDecoded) {
|
||||
tracker.generateCapturedDecoded = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.lastGeneratedTps = 0
|
||||
debug(`gen counter reset nd=${nd}`)
|
||||
} else {
|
||||
const dt = (now - tracker.generateStartAt) / 1000
|
||||
const delta = nd - tracker.generateCapturedDecoded
|
||||
if (dt > 0 && delta > 0) {
|
||||
tracker.lastGeneratedTps = delta / dt
|
||||
debug(`gen delta=${delta} dt=${dt.toFixed(2)} tps=${tracker.lastGeneratedTps.toFixed(1)}`)
|
||||
} else if (delta === 0) {
|
||||
tracker.lastGeneratedTps = 0
|
||||
genEnded = true
|
||||
debug(`gen stalled delta=${delta}`)
|
||||
}
|
||||
}
|
||||
if (nd > tracker.generateMaxDecoded) {
|
||||
const delta = nd - tracker.generateMaxDecoded
|
||||
const dt = (now - tracker.generateStartAt) / 1000
|
||||
if (delta > 0 && dt > 0) {
|
||||
tracker.lastGeneratedTps = delta / dt
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} delta=${delta} dt=${dt.toFixed(2)} tps=${tracker.lastGeneratedTps.toFixed(1)}`)
|
||||
}
|
||||
} else {
|
||||
tracker.generateMaxDecoded = nd
|
||||
tracker.generateCapturedDecoded = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.generateSlotId = slotId
|
||||
} else if (nd < tracker.generateMaxDecoded) {
|
||||
tracker.generateCapturedDecoded = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.lastGeneratedTps = 0
|
||||
debug(`gen new slot id=${slotId} nd=${nd}`)
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} counter reset`)
|
||||
} else {
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} stalled`)
|
||||
tracker.lastGeneratedTps = 0
|
||||
genEnded = true
|
||||
}
|
||||
} else {
|
||||
if (tracker.isGenerating) {
|
||||
|
||||
Reference in New Issue
Block a user