From 2ae29af1990caf37d42dac277dfb33d1fd32b844 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 24 Jun 2026 16:05:03 +0100 Subject: [PATCH] reducing the channel sizes so data doesn't pile up and frames are dropped instead --- README.md | 5 +++++ providers/iracing/iracing.go | 2 +- services/telemetry.go | 8 +------- tui/internal/controllers/streaming.go | 6 +++--- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c84e4b9..857aaac 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,11 @@ normally until it hangs. - Go back to Terminal2 to and do a `Ctrl+c` to capture the state and then check what went wrong by looking at the `goroutines` for example. +pprof: +- `go tool pprof http://localhost:8001/debug/pprof/mutex` + - type `top` to view the summary + - type `web` to view a graph version + ### Shameless begging Hey, doesn't hurt to try, its free either way: diff --git a/providers/iracing/iracing.go b/providers/iracing/iracing.go index 0f29e9d..3162ce7 100644 --- a/providers/iracing/iracing.go +++ b/providers/iracing/iracing.go @@ -69,7 +69,7 @@ func NewIRacingProvider( logger: logger, SDK: sdk, data: telem.NewTelemetryData(), - streamCh: make(chan telem.TelemetryData), + streamCh: make(chan telem.TelemetryData, 1), // NOTE: This is because I stupidly recorded a test IBT file in 240 ticker: time.NewTicker(time.Second / 240), }, nil diff --git a/services/telemetry.go b/services/telemetry.go index 1b66e53..56c901b 100644 --- a/services/telemetry.go +++ b/services/telemetry.go @@ -27,7 +27,7 @@ func NewTelemetryService(logger *slog.Logger, cdash *CDashService) *TelemetrySer newService := &TelemetryService{ logger: logger, cdash: cdash, - uiOutCh: make(chan telem.TelemetryData, 100), + uiOutCh: make(chan telem.TelemetryData, 5), listeners: make(map[string]chan telem.TelemetryData), } @@ -78,12 +78,6 @@ func (t *TelemetryService) multiplexData(ctx context.Context, dataCh <-chan tele } } t.mut.RUnlock() - - select { - case t.uiOutCh <- data: - default: - // Control latency - } } } } diff --git a/tui/internal/controllers/streaming.go b/tui/internal/controllers/streaming.go index bb28d07..e089891 100644 --- a/tui/internal/controllers/streaming.go +++ b/tui/internal/controllers/streaming.go @@ -48,7 +48,7 @@ func NewStreamingCtrl( TelemServ: serTelem, Messages: make(chan string, 10), Internal: make(chan string, 10), - TelemetryCh: make(chan telemetry.TelemetryData, 100), + TelemetryCh: make(chan telemetry.TelemetryData, 1), Run: false, StreamView: streamView, isRunning: false, @@ -62,7 +62,7 @@ func NewStreamingCtrl( } func (sc *StreamingCtrl) subscribeListeners() { - sc.TelemetryCh = sc.TelemServ.SubscribeListener("UI", 50) + sc.TelemetryCh = sc.TelemServ.SubscribeListener("UI", 1) } func (sc *StreamingCtrl) registerHooks() { @@ -109,7 +109,7 @@ func (sc *StreamingCtrl) StartStop() { // NOTE: // Subscribe the only existing device - needs to be discovered by now slog.Debug("setting the data stream for cdash") - sc.Service.SetTelemetryChannel(sc.TelemServ.SubscribeListener("cdash", 50)) + sc.Service.SetTelemetryChannel(sc.TelemServ.SubscribeListener("cdash", 1)) slog.Debug("starting to stream data again") sc.Service.StartStream()