diff --git a/internal/app/engine.go b/internal/app/engine.go index 34fbaaf..ba824ef 100644 --- a/internal/app/engine.go +++ b/internal/app/engine.go @@ -112,6 +112,7 @@ type RuntimeTransition struct { const ( lateBufferIndicatorWindow = 5 * time.Second + writeLateTolerance = 1 * time.Millisecond queueCriticalStreakThreshold = 3 queueMutedStreakThreshold = queueCriticalStreakThreshold * 2 queueMutedRecoveryThreshold = queueCriticalStreakThreshold @@ -588,12 +589,13 @@ func (e *Engine) writerLoop(ctx context.Context) { queueStats := e.frameQueue.Stats() e.evaluateRuntimeState(queueStats, e.hasRecentLateBuffers()) - if writeDur > e.chunkDuration { + lateOver := writeDur - e.chunkDuration + if lateOver > writeLateTolerance { late := e.lateBuffers.Add(1) e.lateBufferAlertAt.Store(uint64(time.Now().UnixNano())) if late <= 5 || late%20 == 0 { - log.Printf("TX LATE: write=%s budget=%s over=%s queueResidence=%s pipeline=%s", - writeDur, e.chunkDuration, writeDur-e.chunkDuration, queueResidence, pipelineLatency) + log.Printf("TX LATE: write=%s budget=%s over=%s tolerance=%s queueResidence=%s pipeline=%s", + writeDur, e.chunkDuration, lateOver, writeLateTolerance, queueResidence, pipelineLatency) } }