1# Consul Benchmark Results
2
3As part of a benchmark, we started a 4 node DigitalOcean cluster to benchmark.
4There are 3 servers, meaning writes must commit to at least 2 servers.
5The cluster uses the 16GB DigitalOcean droplet which has the following specs:
6
7 * 8 CPU Cores, 2Ghz
8 * 16GB RAM
9 * 160GB SSD disk
10 * 1Gbps NIC
11
12We used `bonnie++` to benchmark the disk, and the key metrics are:
13
14 * 188MB/s sequential write
15 * 86MB/s sequential read-write-flush
16 * 2636 random seeks per second
17
18# Output
19
20Below is the output for a test run on a benchmark cluster. We ran the benchmark
21several times to warm up the nodes, and this is just a single representative sample.
22
23Note, that a single worker was running the benchmark. This means the "stale" test is
24not representative of total throughput, as the client was only routing to a single server.
25
26    ===== PUT test =====
27    GOMAXPROCS=4 boom -m PUT -d "74a31e96-1d0f-4fa7-aa14-7212a326986e" -n 20480 -c 64 http://localhost:8500/v1/kv/bench
28    20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
29
30    Summary:
31      Total:	19.4302 secs.
32      Slowest:	0.1715 secs.
33      Fastest:	0.0157 secs.
34      Average:	0.0606 secs.
35      Requests/sec:	1054.0313
36      Total Data Received:	102400 bytes.
37      Response Size per Request:	5 bytes.
38
39    Status code distribution:
40      [200]	20480 responses
41
42    Response time histogram:
43      0.016 [1]	|
44      0.031 [233]	|∎
45      0.047 [4120]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
46      0.062 [8079]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
47      0.078 [5082]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
48      0.094 [2045]	|∎∎∎∎∎∎∎∎∎∎
49      0.109 [656]	|∎∎∎
50      0.125 [200]	|
51      0.140 [12]	|
52      0.156 [31]	|
53      0.172 [21]	|
54
55    Latency distribution:
56      10% in 0.0416 secs.
57      25% in 0.0484 secs.
58      50% in 0.0579 secs.
59      75% in 0.0697 secs.
60      90% in 0.0835 secs.
61      95% in 0.0919 secs.
62      99% in 0.1113 secs.
63
64    ===== GET default test =====
65    GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench
66    20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
67
68    Summary:
69      Total:	9.6804 secs.
70      Slowest:	0.0830 secs.
71      Fastest:	0.0023 secs.
72      Average:	0.0302 secs.
73      Requests/sec:	2115.6096
74      Total Data Received:	2560000 bytes.
75      Response Size per Request:	125 bytes.
76
77    Status code distribution:
78      [200]	20480 responses
79
80    Response time histogram:
81      0.002 [1]	|
82      0.010 [143]	|
83      0.018 [1666]	|∎∎∎∎∎∎∎∎∎
84      0.026 [6009]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
85      0.035 [6732]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
86      0.043 [3857]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
87      0.051 [1389]	|∎∎∎∎∎∎∎∎
88      0.059 [459]	|∎∎
89      0.067 [154]	|
90      0.075 [53]	|
91      0.083 [17]	|
92
93    Latency distribution:
94      10% in 0.0189 secs.
95      25% in 0.0233 secs.
96      50% in 0.0291 secs.
97      75% in 0.0358 secs.
98      90% in 0.0427 secs.
99      95% in 0.0476 secs.
100      99% in 0.0597 secs.
101
102    ===== GET stale test =====
103    GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?stale
104    20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
105
106    Summary:
107      Total:	10.3082 secs.
108      Slowest:	0.0972 secs.
109      Fastest:	0.0015 secs.
110      Average:	0.0322 secs.
111      Requests/sec:	1986.7714
112      Total Data Received:	2560000 bytes.
113      Response Size per Request:	125 bytes.
114
115    Status code distribution:
116      [200]	20480 responses
117
118    Response time histogram:
119      0.002 [1]	|
120      0.011 [320]	|∎
121      0.021 [2558]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎
122      0.030 [6247]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
123      0.040 [6895]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
124      0.049 [3174]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
125      0.059 [971]	|∎∎∎∎∎
126      0.068 [249]	|∎
127      0.078 [52]	|
128      0.088 [11]	|
129      0.097 [2]	|
130
131    Latency distribution:
132      10% in 0.0187 secs.
133      25% in 0.0246 secs.
134      50% in 0.0317 secs.
135      75% in 0.0387 secs.
136      90% in 0.0461 secs.
137      95% in 0.0511 secs.
138      99% in 0.0618 secs.
139
140    ===== GET consistent test =====
141    GOMAXPROCS=4 boom -n 20480 -c 64 http://localhost:8500/v1/kv/bench?consistent
142    20480 / 20480 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00 %
143
144    Summary:
145      Total:	10.4835 secs.
146      Slowest:	0.0991 secs.
147      Fastest:	0.0024 secs.
148      Average:	0.0327 secs.
149      Requests/sec:	1953.5549
150      Total Data Received:	2560000 bytes.
151      Response Size per Request:	125 bytes.
152
153    Status code distribution:
154      [200]	20480 responses
155
156    Response time histogram:
157      0.002 [1]	|
158      0.012 [137]	|
159      0.022 [2405]	|∎∎∎∎∎∎∎∎∎∎∎∎
160      0.031 [7754]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
161      0.041 [6382]	|∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
162      0.051 [2629]	|∎∎∎∎∎∎∎∎∎∎∎∎∎
163      0.060 [826]	|∎∎∎∎
164      0.070 [245]	|∎
165      0.080 [81]	|
166      0.089 [17]	|
167      0.099 [3]	|
168
169    Latency distribution:
170      10% in 0.0208 secs.
171      25% in 0.0254 secs.
172      50% in 0.0314 secs.
173      75% in 0.0384 secs.
174      90% in 0.0463 secs.
175      95% in 0.0518 secs.
176      99% in 0.0645 secs.
177
178