Hi,
Recently, i have written some code to bench the performance of ceph monitor cluster and
etcd, and compare the results.
I installed ceph cluster (only three monitors, no osds, no mgr, no rgw, no mds) on my
three virtualbox machines, and also installed etcd cluster on these three machines. The
installed ceph version is luminous 12.2.8, the version of etcd is 3.3.11. The
configuration of each virtualbox machine is 10GB memory, and 8 core cpu.
ceph mon cluster was benched using librados's mon_command api, send config-key related
command to monitors, `config-key set` for writing key-value, `config-key get` for reading
key-value. The key is ranged in [0, 1024), the value is random hex string of length 32,
The bench tool is written using c++.
etcd was benched using etcd client v2 version's api go.etcd.io/etcd/client, for
reading key-values I have set the Quorum flag in the GetOptions to achieve linearizability
consistency. The key is ranged in [0, 1024), the value is random hex string of length 32.
The bench tool is written using golang.
Both of the bench tools are runned on the first virtualbox machine.
Here is the bench result:
--------------------------------------------------------------------
| ceph monitors | etcd |
--------------------------------------------------------------------
| qps latency | qps latency |
| (max#min#avg) | (max#min#avg) |
--------------------------------------------------------------------
single concurrent read | 623 407#0#1 | 481 71#1#1 |
single concurrent write | 116 454#3#8 | 483 26#1#1 |
--------------------------------------------------------------------
16 concurrent read | 1110 1220#0#14 | 3322 23#1#4 |
16 concurrent write | 293 440#6#54 | 3280 29#1#4 |
--------------------------------------------------------------------
32 concurrent read | 1176 1161#0#27 | 4006 58#1#7 |
32 concurrent write | 332 754#8#97 | 4297 32#1#6 |
--------------------------------------------------------------------
64 concurrent read | 1160 1623#0#55 | 4954 156#2#12 |
64 concurrent write | 336 1738#8#192 | 5013 92#3#12 |
--------------------------------------------------------------------
As the result shows:
1. for ceph monitors, reading is about 4 times faster than write, which may because ceph
monitor using lease, so all monitors can service reading request.
2. for etcd cluster, the performance between reading and writing is no big difference.
3. compare ceph monitors and etcd, ceph monitors is much slower than etcd, especially in
multi concurrent situation.
Best wishes,
Yao Zongyou