ycsb-endpoint config-connect seam into a cloud product
evaluation: throughput + tail latency from the recognized YCSB tool, plus the
price/performance composite, against a managed Redis-compatible service you
operate.
The connect chain (target → adapter → suite → evaluator) is covered by this
repo’s CI (unit + mock). The live steps below need your managed service and
the upstream YCSB tool — clousight-bench never provisions the service for you on
this path, so nothing here creates cloud spend by surprise.
0. What you need
- A managed Redis-compatible instance (Aliyun Tair/Redis, AWS ElastiCache, …) reachable from the driver machine (VPC/allowlist configured).
- The YCSB launcher (Java ≥ 11): YCSB releases
— put
ycsbonPATHor setYCSB_HOME. pip install clousight-bench.
1. Where to run the driver (read this)
Numbers include the network between driver and service. For comparable results, run the driver in the same region/VPC as the service (an ECS/EC2 box), not your laptop over the public internet. Record where you ran it — the environment fingerprint keeps cross-machine numbers from pooling anyway, but be kind to your future self.2. Connect profile
Start from the committed example (examples/cloud-connect/aliyun-redis.yaml /
aws-elasticache.yaml):
3. Preflight, then run
csbench doctor now probes for real: a Redis-protocol PING (auth never sent; -NOAUTH still proves a live service) plus YCSB launcher + Java ≥ 11 checks. A wrong address, a closed
allowlist or a missing/old tool surfaces here with a remediation hint — not as a
mid-run stack trace. The same checks gate csbench run at its PREFLIGHT stage.
ycsb.throughput_ops, ycsb.read_p99_us, ycsb.update_p99_us, … —
environmental measurements from the unmodified upstream tool. Only runs sharing
a benchmark and environment fingerprint pool.
4. Price/performance
Map the instance’s price to the headline metric via the pricing feed (see TPC-H price/QphH for the mechanism):CLOUSIGHT_PRICING_DATA=feed.json csbench run … adds
extensions.pricing.price_performance[] — $ per (ops/sec), unaudited, from
your own price input. It can never change the verdict.
5. Reliability under disruption (R5)
The harness owns the driver-side network path, so it can disrupt it honestly — no server-side fault injection against a managed service:at_s the harness cuts every active connection (reset) or holds
forwarding (stall). Disruption requires the redis binding and a target
endpoint — with any other binding the run fails loudly rather than run a
clean benchmark under a disruption-labeled dataset. What lands in the record is
evidence, never invention: ycsb.error_rate / ycsb.ops_failed come from
YCSB’s own Return= counts, ycsb.completed_under_disruption appears only
when the disruption actually fired, and the trajectory carries a disruption
span at the measured firing time (for stall, the gate-enforced window,
clamped to run end). A different disruption plan is a different benchmark
(folded into the dataset digest).
6. Honest caveats
- YCSB’s Redis binding is single-node oriented; cluster-mode services need the cluster client flag upstream — validate before comparing across services.
- Managed-service list prices change; record
source/date in your feed. - Compare same workload, same record/operation counts, same region locality only — the fingerprints enforce the first two, you enforce the third.
