Draft
Conversation
Adds bigtable-bench, a CLI tool that writes objects directly to the BigTableBackend and prints live latency percentiles, throughput, and failure counts. Supports configurable concurrency, object size, connection pool size, and emulator address (for use with Toxiproxy).
Adds --project, --instance, --table flags and makes --addr optional so the bench can connect to a real GCP Bigtable instance (using gcp_auth for credentials) in addition to the local emulator. All objects are now written with a 1h TTL to avoid polluting production tables during load tests.
When connecting to real GCP Bigtable, rustls requires an explicit CryptoProvider because both aws-lc-rs and ring are enabled as transitive dependencies. Install aws-lc-rs as the default at startup.
Prints bytes/s alongside ops/s in both the live display and final summary, using SI decimal prefixes (kB/s, MB/s, GB/s).
- Fix ops/s/conn to divide by pool size (connection count) rather than concurrency (in-flight request count) - Print latencies (avg/p50/p95/p99/max) on a separate line with aligned columns - Show elapsed time (M:SS) in the live stats header and final summary - Use debug-nonroot distroless image for easier container inspection
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.
Adds
bigtable-bench, a CLI tool for load testing the Bigtable backend directly — bypassing the HTTP layer and writing objects viaBigTableBackend. Intended for use with the Bigtable emulator or Toxiproxy to simulate realistic network conditions.The tool prints live latency percentiles (avg, p50, p95, p99, max), overall throughput, and per-connection throughput every second. Failed requests are counted and shown in red. On shutdown, the live display is cleared and a final summary is printed.
Note: Also makes
objectstore_service::backendpublic (withmissing_docssuppressed) so the bench can accessBigTableBackenddirectly without duplicating connection setup.Note: Run with
RUSTFLAGS=-Awarningsto suppress warnings.