Benchmarks für etcd v2.2.0-rc
Physischer Rechner
GCE-Rechnertyp n1-highcpu-2
- 1x dedizierte lokale SSD, unter /var/lib/etcd eingebunden
- 1x dedizierter langsamer Datenträger für das Betriebssystem
- 1.8 GB Arbeitsspeicher
- 2x CPUs
etcd-Cluster
3 Mitglieder mit etcd 2.2.0-rc, jeweils auf einem eigenen Rechner.
Versionsdetails:
Außerdem bilden wir aus 3 Mitgliedern mit etcd 2.1.0 im Alpha-Stadium einen Cluster, um die Ausgangsleistung zu ermitteln. Der verwendete etcd-Commit ist c7146bd5 , derselbe wie im etcd-2.1-Benchmark .
Testverfahren
Einen weiteren Rechner einrichten und mit dem HTTP-Benchmarkwerkzeug hey Anfragen an jedes etcd-Mitglied senden. Eine ausführliche Anleitung enthält der Leitfaden zur Benchmark-Entwicklung .
Leistung
Einen einzelnen Schlüssel lesen
| Schlüsselgröße in Bytes | Anzahl der Clients | etcd-Zielserver | Lese-QPS | 90. Latenzperzentil (ms) |
|---|---|---|---|---|
| 64 | 1 | nur Leader | 2804 (-5%) | 0.4 (+0%) |
| 64 | 64 | nur Leader | 17816 (+0%) | 5.7 (-6%) |
| 64 | 256 | nur Leader | 18667 (-6%) | 20.4 (+2%) |
| 256 | 1 | nur Leader | 2181 (-15%) | 0.5 (+25%) |
| 256 | 64 | nur Leader | 17435 (-7%) | 6.0 (+9%) |
| 256 | 256 | nur Leader | 18180 (-8%) | 21.3 (+3%) |
| 64 | 64 | alle Server | 46965 (-4%) | 2.1 (+0%) |
| 64 | 256 | alle Server | 55286 (-6%) | 7.4 (+6%) |
| 256 | 64 | alle Server | 46603 (-6%) | 2.1 (+5%) |
| 256 | 256 | alle Server | 55291 (-6%) | 7.3 (+4%) |
Einen einzelnen Schlüssel schreiben
| Schlüsselgröße in Bytes | Anzahl der Clients | etcd-Zielserver | Schreib-QPS | 90. Latenzperzentil (ms) |
|---|---|---|---|---|
| 64 | 1 | nur Leader | 76 (+22%) | 19.4 (-15%) |
| 64 | 64 | nur Leader | 2461 (+45%) | 31.8 (-32%) |
| 64 | 256 | nur Leader | 4275 (+1%) | 69.6 (-10%) |
| 256 | 1 | nur Leader | 64 (+20%) | 16.7 (-30%) |
| 256 | 64 | nur Leader | 2385 (+30%) | 31.5 (-19%) |
| 256 | 256 | nur Leader | 4353 (-3%) | 74.0 (+9%) |
| 64 | 64 | alle Server | 2005 (+81%) | 49.8 (-55%) |
| 64 | 256 | alle Server | 4868 (+35%) | 81.5 (-40%) |
| 256 | 64 | alle Server | 1925 (+72%) | 47.7 (-59%) |
| 256 | 256 | alle Server | 4975 (+36%) | 70.3 (-36%) |
Erklärung der Leistungsänderungen
-
Die Lese-QPS sinken in den meisten Szenarien um 5~8%. Der Grund ist, dass etcd für jede Speicheroperation Speichermetriken erfasst. Diese sind für Überwachung und Fehlersuche wichtig, weshalb der Rückgang vertretbar ist.
-
Die Schreib-QPS an den Leader steigen um 20~30%. Dies liegt daran, dass wir die Raft-Hauptschleife von der Schleife zum Anwenden der Einträge entkoppeln, sodass sie sich nicht gegenseitig blockieren.
-
Die Schreib-QPS an alle Server steigen um 30~80%, weil Follower den neuesten Commit-Index früher erhalten und Vorschläge schneller festschreiben können.