You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Date: 2026-02-09 (v0.1.0), verified unchanged on v0.2.0
Platform: macOS Darwin 25.3.0, Apple Silicon
etcd version: 3.6.7, API 3.6
rusd version: 0.1.0 (benchmarks unchanged in v0.2.0 — new features do not affect the storage hot path)
K8s version: v1.35.0 (Kind)
etcdctl Microbenchmarks (1000 keys, sequential)
Operation
rusd
etcd
rusd Advantage
Sequential Put (1000 keys)
9,331ms (107 ops/s)
14,521ms (68 ops/s)
1.56x faster
Sequential Get (1000 keys)
7,066ms (141 ops/s)
7,171ms (139 ops/s)
~same
Range Query (100 iterations)
740ms (135 ops/s)
747ms (133 ops/s)
~same
Sequential Delete (1000 keys)
7,109ms (140 ops/s)
12,266ms (81 ops/s)
1.73x faster
Memory (RSS after benchmark)
21 MB
42 MB
2x less memory
Analysis
Writes (Put/Delete): rusd is 1.5-1.7x faster than etcd. This is expected because rusd uses sled (a modern embedded database) while etcd uses bbolt. sled has better write throughput on modern hardware.
Reads (Get/Range): Performance is essentially identical. Both are limited by gRPC overhead on single-key sequential access.
Memory: rusd uses half the memory of etcd (21MB vs 42MB), benefiting from Rust's zero-cost abstractions and sled's efficient memory management.
K8s Workload Benchmarks (Kind Cluster)
Operation
rusd
etcd
rusd Advantage
Create 10 Namespaces
314ms
384ms
1.2x faster
Create 50 ConfigMaps
1,538ms
1,820ms
1.2x faster
Deploy + Scale to 5 replicas
1,542ms
15,863ms
10.3x faster
Rolling Update (5 replicas)
2,006ms
12,067ms
6.0x faster
Cleanup 10 Namespaces (async)
68ms
-
-
Analysis
Simple CRUD (Namespace/ConfigMap): rusd is ~20% faster for straightforward create operations. The bottleneck here is kube-apiserver processing, not the etcd backend.
Deployment + Scaling: rusd is 10x faster. This dramatic difference is because:
rusd's faster write throughput means kube-apiserver can commit scheduling decisions faster
Watch events propagate faster through rusd's WatchHub (dedicated per-watcher channels)
Lower memory overhead means more CPU cycles for serving requests
Rolling Updates: rusd is 6x faster. Rolling updates involve rapid create/delete cycles for pods, where rusd's write performance advantage compounds.
Resource Usage Comparison
Metric
rusd
etcd
Binary size
5.2 MB
~23 MB
Startup time
~30ms
~500ms
Idle RSS
14 MB
~35 MB
Post-benchmark RSS
21 MB
42 MB
Language
Rust
Go
Storage engine
sled
bbolt
Caveats
Single-node only: Benchmarks run with single-node etcd and rusd. etcd's Raft consensus overhead is minimal in single-node mode but would add latency in multi-node clusters.
Sequential access: etcdctl benchmarks use sequential access patterns. Concurrent/parallel access patterns may show different characteristics.
K8s workload variation: K8s benchmark timing includes kube-apiserver, kubelet, and controller-manager processing time, not just etcd/rusd latency.
rusd revision history: As of the feat/production-ready branch, rusd maintains full MVCC revision history via dual-write to kv and kv_rev trees. The original benchmark was run before this fix, so "Too large resource version" warnings seen in earlier versions no longer apply.
etcd K8s numbers may be skewed: The etcd Kind cluster was the second cluster created in the session, which may have Docker image cache advantages but also more host memory pressure.