etcd v2.2.0-rcのベンチマーク
etcd v2.2.0-rcの性能測定
物理マシン
GCEのn1-highcpu-2マシンタイプ
- /var/lib/etcdにマウントした専用ローカルSSD:1台
- OS用の専用低速ディスク:1台
- メモリー:1.8 GB
- CPU:2基
etcdクラスター
etcd 2.2.0-rcメンバー3つを、それぞれ別のマシンで実行します。
バージョンの詳細:
比較の基準となる性能を測るため、alpha段階のetcd 2.1.0メンバー3つでもクラスターを構成します。etcdのコミットはc7146bd5 で、etcd 2.1のベンチマーク で使用したものと同じです。
テスト
別のマシンを起動し、hey HTTPベンチマークツール を使って各etcdメンバーにリクエストを送信します。詳しい手順はベンチマーク開発ガイド を参照してください。
性能
単一キーの読み取り
| キーサイズ(バイト) | クライアント数 | 対象のetcdサーバー | 読み取りQPS | 90パーセンタイルレイテンシー(ms) |
|---|---|---|---|---|
| 64 | 1 | リーダーのみ | 2804 (-5%) | 0.4 (+0%) |
| 64 | 64 | リーダーのみ | 17816 (+0%) | 5.7 (-6%) |
| 64 | 256 | リーダーのみ | 18667 (-6%) | 20.4 (+2%) |
| 256 | 1 | リーダーのみ | 2181 (-15%) | 0.5 (+25%) |
| 256 | 64 | リーダーのみ | 17435 (-7%) | 6.0 (+9%) |
| 256 | 256 | リーダーのみ | 18180 (-8%) | 21.3 (+3%) |
| 64 | 64 | 全サーバー | 46965 (-4%) | 2.1 (+0%) |
| 64 | 256 | 全サーバー | 55286 (-6%) | 7.4 (+6%) |
| 256 | 64 | 全サーバー | 46603 (-6%) | 2.1 (+5%) |
| 256 | 256 | 全サーバー | 55291 (-6%) | 7.3 (+4%) |
単一キーの書き込み
| キーサイズ(バイト) | クライアント数 | 対象のetcdサーバー | 書き込みQPS | 90パーセンタイルレイテンシー(ms) |
|---|---|---|---|---|
| 64 | 1 | リーダーのみ | 76 (+22%) | 19.4 (-15%) |
| 64 | 64 | リーダーのみ | 2461 (+45%) | 31.8 (-32%) |
| 64 | 256 | リーダーのみ | 4275 (+1%) | 69.6 (-10%) |
| 256 | 1 | リーダーのみ | 64 (+20%) | 16.7 (-30%) |
| 256 | 64 | リーダーのみ | 2385 (+30%) | 31.5 (-19%) |
| 256 | 256 | リーダーのみ | 4353 (-3%) | 74.0 (+9%) |
| 64 | 64 | 全サーバー | 2005 (+81%) | 49.8 (-55%) |
| 64 | 256 | 全サーバー | 4868 (+35%) | 81.5 (-40%) |
| 256 | 64 | 全サーバー | 1925 (+72%) | 47.7 (-59%) |
| 256 | 256 | 全サーバー | 4975 (+36%) | 70.3 (-36%) |
性能変化の説明
-
ほとんどのシナリオで、読み取りQPSが5~8%低下しています。これは、etcdがストア操作ごとにストアのメトリクスを記録するためです。メトリクスは監視やデバッグに重要なため、この低下は許容できると考えています。
-
リーダーに対する書き込みQPSが20~30%増加しています。raftのメインループとエントリー適用ループを分離し、互いの処理をブロックしないようにしたためです。
-
全サーバーに対する書き込みQPSが30~80%増加しています。フォロワーが最新のコミットインデックスをより早く受信し、提案をより速くコミットできるようになったためです。