|
|
|
@@ -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) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|