perf: add -snapshots in pbench run for collecting time series metrics - #97
Open
yabinma wants to merge 2 commits into
Open
perf: add -snapshots in pbench run for collecting time series metrics#97yabinma wants to merge 2 commits into
yabinma wants to merge 2 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
--snapshots: periodic query-JSON time-series captureSummary
Today pbench saves a single query JSON after a query finishes — a terminal snapshot.
That's a photo; it can't answer time-based questions (when did throughput collapse,
which stage stalled, is a query in a runaway state). This PR adds an opt-in flag that
periodically captures
/v1/query/{id}while the query runs, producing a time-seriesof query-JSON frames — a movie instead of a photo.
What's new
pbench runflags (all opt-in; default off):--snapshots— master switch--snapshot-interval(default30s, 5s floor)--snapshot-max(default20;0= unlimited)--snapshot-fetch-timeout(default = interval)save_json_snapshots, …).Precedence: per-stage JSON > CLI flag > default.
<query>.snapshots/snapshot_<seq>_<epochMillis>.jsondirectory — one per query.Behavior & safety
--snapshotsoff, behavior/output is byte-identical to today(no
.snapshots/dir, no extra polling).completion) and partial files are cleaned up.
poller is never permanently disabled. Retention keeps the earliest frame + most recent.
Testing
-raceclean.EXCEEDED_TIME_LIMITquery: regression pass (snapshotsoff → unchanged) and feature pass (20 frames captured, clean stop; the series shows CPU
climbing while progress flatlines — the runaway-query signature the single terminal file misses).
Also includes a Go toolchain bump 1.26.4 → 1.26.5 to clear
govulncheckGO-2026-5856(crypto/tls); verified 0 code-affecting vulnerabilities under 1.26.5.