Przeglądaj źródła

tune: ignore sub-millisecond write jitter in TX late detection

tags/v0.9.0
Jan 1 miesiąc temu
rodzic
commit
7d0efe3a38
1 zmienionych plików z 5 dodań i 3 usunięć
  1. +5
    -3
      internal/app/engine.go

+ 5
- 3
internal/app/engine.go Wyświetl plik

@@ -112,6 +112,7 @@ type RuntimeTransition struct {


const ( const (
lateBufferIndicatorWindow = 5 * time.Second lateBufferIndicatorWindow = 5 * time.Second
writeLateTolerance = 1 * time.Millisecond
queueCriticalStreakThreshold = 3 queueCriticalStreakThreshold = 3
queueMutedStreakThreshold = queueCriticalStreakThreshold * 2 queueMutedStreakThreshold = queueCriticalStreakThreshold * 2
queueMutedRecoveryThreshold = queueCriticalStreakThreshold queueMutedRecoveryThreshold = queueCriticalStreakThreshold
@@ -588,12 +589,13 @@ func (e *Engine) writerLoop(ctx context.Context) {
queueStats := e.frameQueue.Stats() queueStats := e.frameQueue.Stats()
e.evaluateRuntimeState(queueStats, e.hasRecentLateBuffers()) e.evaluateRuntimeState(queueStats, e.hasRecentLateBuffers())


if writeDur > e.chunkDuration {
lateOver := writeDur - e.chunkDuration
if lateOver > writeLateTolerance {
late := e.lateBuffers.Add(1) late := e.lateBuffers.Add(1)
e.lateBufferAlertAt.Store(uint64(time.Now().UnixNano())) e.lateBufferAlertAt.Store(uint64(time.Now().UnixNano()))
if late <= 5 || late%20 == 0 { 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)
} }
} }




Ładowanie…
Anuluj
Zapisz