summaryrefslogtreecommitdiff
path: root/internal/statsengine/engine.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/statsengine/engine.go')
-rw-r--r--internal/statsengine/engine.go42
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