Method: memtier_benchmark on a 16-core bare-metal Linux host, cpuset-pinned (redis on 6 cores, the proxy under test on 4, memtier on 6), interleaved arms with the order swapped per round, 6 samples per arm, 64-byte values, 1:1 SET/GET over 100k keys. Backing cluster: redis 6.2, 3 masters + 3 replicas. Every proxy runs 4 worker threads.
| target | pipeline=1 ops/s | pipeline=16 ops/s |
|---|---|---|
| direct to cluster (no proxy) | 763k | 4.09M |
| mithril | 944k | 4.62M |
| mt-proxy (C++) | 961k | 3.28M |
| predixy | 865k | 4.35M |
At pipeline 16 mithril is the fastest of everything measured — including the direct arm, because request batching reduces per-op syscall load on the single-threaded redis processes. At pipeline 1 mithril trails mt-proxy by ~1.7%: mt-proxy handles a request inline in a single epoll loop, while mithril pays reader-to-writer task handoffs that pipelining amortizes.
Numbers from Docker-for-Mac invert the ranking and must not be used for comparisons.