Summary
Support periodic metrics emission during long-running benchmark phases, enabling real-time monitoring and time-series analysis for soak/endurance tests.
Current Behavior
Metrics are only reported at phase completion. For a soak test running hours or days, there's no visibility into performance trends, gradual degradation, or memory leaks until the entire phase finishes.
Proposed Behavior
Add an option to emit intermediate metrics at a configurable interval (e.g., every 10 or 30 seconds) during a phase. Each interval report should include the same metrics structure as the final phase report but scoped to that time window.
This could be a workload config option:
{
"phases": [{
"id": "SOAK",
"reporting_interval_seconds": 30,
"completion": { "type": "duration", "seconds": 3600 }
}]
}
Implementation Notes
- Affects all engines (Java, Ruby, C#, etc)
- Interval records should be written to the same NDJSON output with a field distinguishing them from final phase records (e.g., "type": "interval" vs "type": "phase")
- HdrHistogram supports snapshot and reset, which would enable per-interval percentile reporting without accumulating the full run
- The graph generator may need updates to visualize time-series interval data
Note
Copied from ikolomi/resp-bench#17.
Originally opened by @jeremyprime on
2026-04-09T18:00:22Z.Summary
Support periodic metrics emission during long-running benchmark phases, enabling real-time monitoring and time-series analysis for soak/endurance tests.
Current Behavior
Metrics are only reported at phase completion. For a soak test running hours or days, there's no visibility into performance trends, gradual degradation, or memory leaks until the entire phase finishes.
Proposed Behavior
Add an option to emit intermediate metrics at a configurable interval (e.g., every 10 or 30 seconds) during a phase. Each interval report should include the same metrics structure as the final phase report but scoped to that time window.
This could be a workload config option:
{ "phases": [{ "id": "SOAK", "reporting_interval_seconds": 30, "completion": { "type": "duration", "seconds": 3600 } }] }Implementation Notes