Setup

Latency with benchmark client running on the ZooKeeper server

Observations during reads:
Observations during writes

Latency with benchmark client running on a separate machine

Throughput

The maximum read throughput I was able to observe was ~50,000 512Byte-read operations per second. This was using 8 processes (without my own Java threads) on each of 4 client machines. This does not entirely saturate the cores on the server – they are each between 5% and 30% idle at any given time.

The maximum read throughput I was able to observe from a single client machine was only ~29 512Byte-read operations per second using 8 processes (each of 4 Java threads). I don't understand the behavior of the client library (which seems to spawn about 11 threads of its own), so I can't really explain this.

1 client machine: 5.6Kops/s

2 client machines: 10.4Kops/s

3 client machies: 15.7Kops/s

4 client machines: 20.0Kops/s