Summary
Add a manually-triggered benchmark GitHub Action to the valkey-glide repo, following the pattern established in spring-data-valkey. This enables on-demand benchmarking for regression detection (A/B comparison of two refs) and single-run profiling (flame graphs) across all languages in that repo.
Current Behavior
No benchmark action exists in valkey-glide. Benchmarks must be run manually outside of CI.
Proposed Behavior
A single workflow_dispatch action parameterized by language, with inputs for:
- Language (Java, Python, Node.js, Go)
- Baseline ref (tag or commit ID, defaults to main)
- Comparison ref (optional, for A/B comparison)
- Workload profile
- Server topology (standalone/cluster)
The action clones resp-bench, builds the selected language's GLIDE client from source, starts infrastructure, runs the benchmark, and uploads results (NDJSON metrics, flame graph artifacts).
Implementation Notes
- Each language has different build prerequisites (JDK+Maven, pip, npm, Go toolchain, composer) so the action will need per-language setup steps
- The spring-data-valkey orchestrator (
benchmark_orchestrator.py) handles NUMA pinning, variance control, async-profiler, S3 upload, and PostgreSQL publishing - reuse/adapt as neeeded
- Similar actions should be added to the separate client repos (valkey-glide-csharp, valkey-glide-php, valkey-glide-ruby) following the same pattern
- Depends on resp-bench engine support for each language (Python, Node.js, Go, PHP engines)
Note
Copied from ikolomi/resp-bench#20.
Originally opened by @jeremyprime on
2026-04-09T18:22:59Z.Summary
Add a manually-triggered benchmark GitHub Action to the valkey-glide repo, following the pattern established in spring-data-valkey. This enables on-demand benchmarking for regression detection (A/B comparison of two refs) and single-run profiling (flame graphs) across all languages in that repo.
Current Behavior
No benchmark action exists in valkey-glide. Benchmarks must be run manually outside of CI.
Proposed Behavior
A single
workflow_dispatchaction parameterized by language, with inputs for:The action clones resp-bench, builds the selected language's GLIDE client from source, starts infrastructure, runs the benchmark, and uploads results (NDJSON metrics, flame graph artifacts).
Implementation Notes
benchmark_orchestrator.py) handles NUMA pinning, variance control, async-profiler, S3 upload, and PostgreSQL publishing - reuse/adapt as neeeded