Skip to content

bench: add grpc vs resp3 throughput comparison - #149

Merged
kacy merged 1 commit into
mainfrom
bench/grpc-vs-resp3
Feb 15, 2026
Merged

bench: add grpc vs resp3 throughput comparison#149
kacy merged 1 commit into
mainfrom
bench/grpc-vs-resp3

Conversation

@kacy

@kacy kacy commented Feb 15, 2026

Copy link
Copy Markdown
Owner

summary

  • new bench-grpc.sh and bench-grpc.py for comparing gRPC vs RESP3 on standard SET/GET operations
  • measures sequential and pipelined RESP3 (via redis-py) against gRPC unary calls (via ember-py)
  • reports ops/sec and p50/p95/p99 latency for each test
  • saves JSON results to bench/results/ for downstream processing
  • supports --quick flag for a 10k-request sanity check

what was tested

  • verified python harness correctly imports redis-py and ember-py
  • confirmed JSON output structure is consistent with bench-vector.py patterns
  • shell wrapper correctly starts server with both RESP and gRPC ports

design considerations

  • gRPC streaming benchmarks deferred — ember's gRPC API currently uses unary RPCs only, so streaming would need server-side changes first
  • pipeline batch size defaults to 100 (redis-py pipeline) to match typical usage

new benchmark comparing ember's gRPC interface against RESP3 for
standard SET/GET operations:

- bench-grpc.sh: shell wrapper (starts server, runs tests, formats output)
- bench-grpc.py: python harness using ember-py gRPC client and redis-py

measures:
- RESP3 sequential SET/GET (redis-py)
- RESP3 pipelined SET/GET (redis-py pipeline)
- gRPC unary SET/GET (ember-py client)

reports ops/sec and p50/p95/p99 latency for each. saves JSON to
bench/results/ for downstream processing.

requires: --features jemalloc,grpc and ember-py client installed.
@kacy
kacy merged commit b1067a3 into main Feb 15, 2026
7 checks passed
@kacy
kacy deleted the bench/grpc-vs-resp3 branch February 15, 2026 13:12
kacy added a commit that referenced this pull request Feb 19, 2026
new benchmark comparing ember's gRPC interface against RESP3 for
standard SET/GET operations:

- bench-grpc.sh: shell wrapper (starts server, runs tests, formats output)
- bench-grpc.py: python harness using ember-py gRPC client and redis-py

measures:
- RESP3 sequential SET/GET (redis-py)
- RESP3 pipelined SET/GET (redis-py pipeline)
- gRPC unary SET/GET (ember-py client)

reports ops/sec and p50/p95/p99 latency for each. saves JSON to
bench/results/ for downstream processing.

requires: --features jemalloc,grpc and ember-py client installed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant