diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-25 10:10:59 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-25 10:10:59 +0200 |
| commit | 7ca1eeaa98a58471a2214a2274d20b71206af2a1 (patch) | |
| tree | 3a3b041f2ca792485d527b6f19ffc4c362d64f36 /internal/statsengine | |
| parent | 11ca5e1894d5823996b4c5214cb47f6652eadb1d (diff) | |
Parallelize snapshot builders in stats engine
Diffstat (limited to 'internal/statsengine')
| -rw-r--r-- | internal/statsengine/engine.go | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/internal/statsengine/engine.go b/internal/statsengine/engine.go index 6b20a14..fd46cc3 100644 --- a/internal/statsengine/engine.go +++ b/internal/statsengine/engine.go @@ -160,15 +160,47 @@ func (e *Engine) Snapshot() *Snapshot { elapsed := nonNegativeDuration(in.now.Sub(in.startedAt)) rateDiv := elapsed.Seconds() + var ( + syscallsSnap []SyscallSnapshot + filesSnap []FileSnapshot + processesSnap []ProcessSnapshot + latencyHistSnap HistogramSnapshot + gapHistSnap HistogramSnapshot + ) + + var wg sync.WaitGroup + wg.Add(5) + go func() { + defer wg.Done() + syscallsSnap = buildSyscallSnapshots(in.syscalls, elapsed) + }() + go func() { + defer wg.Done() + filesSnap = buildFileSnapshots(in.files) + }() + go func() { + defer wg.Done() + processesSnap = buildProcessSnapshots(in.processes, elapsed) + }() + go func() { + defer wg.Done() + latencyHistSnap = buildHistogramSnapshot(in.latencyHist) + }() + go func() { + defer wg.Done() + gapHistSnap = buildHistogramSnapshot(in.gapHist) + }() + wg.Wait() + snapshot := NewSnapshot( in.latencySeries, in.gapSeries, in.throughputSeries, - buildSyscallSnapshots(in.syscalls, elapsed), - buildFileSnapshots(in.files), - buildProcessSnapshots(in.processes, elapsed), - buildHistogramSnapshot(in.latencyHist), - buildHistogramSnapshot(in.gapHist), + syscallsSnap, + filesSnap, + processesSnap, + latencyHistSnap, + gapHistSnap, ) snapshot.GeneratedAt = in.now |
