# etcd v2.2.0-rcのベンチマーク

> etcd v2.2.0-rcの性能測定

---

LLMSインデックス: [llms.txt](/ja/llms.txt)

---

## 物理マシン {#physical-machine}

GCEのn1-highcpu-2マシンタイプ

- /var/lib/etcdにマウントした専用ローカルSSD：1台
- OS用の専用低速ディスク：1台
- メモリー：1.8 GB
- CPU：2基

## etcdクラスター {#etcd-cluster}

etcd 2.2.0-rcメンバー3つを、それぞれ別のマシンで実行します。

バージョンの詳細：

```
etcd Version: 2.2.0-alpha.1+git
Git SHA: 59a5a7e
Go Version: go1.4.2
Go OS/Arch: linux/amd64
```

比較の基準となる性能を測るため、alpha段階のetcd 2.1.0メンバー3つでもクラスターを構成します。etcdのコミットは[c7146bd5][c7146bd5]で、[etcd 2.1のベンチマーク][etcd-2.1-benchmark]で使用したものと同じです。

## テスト {#testing}

別のマシンを起動し、[hey HTTPベンチマークツール][hey]を使って各etcdメンバーにリクエストを送信します。詳しい手順は[ベンチマーク開発ガイド][hack-benchmark]を参照してください。

## 性能 {#performance}

### 単一キーの読み取り {#reading-one-single-key}

| キーサイズ（バイト） | クライアント数 | 対象の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%) |

### 単一キーの書き込み {#writing-one-single-key}

| キーサイズ（バイト） | クライアント数 | 対象の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%) |

### 性能変化の説明 {#performance-changes-explanation}

- ほとんどのシナリオで、読み取りQPSが5～8%低下しています。これは、etcdがストア操作ごとにストアのメトリクスを記録するためです。メトリクスは監視やデバッグに重要なため、この低下は許容できると考えています。

- リーダーに対する書き込みQPSが20～30%増加しています。raftのメインループとエントリー適用ループを分離し、互いの処理をブロックしないようにしたためです。

- 全サーバーに対する書き込みQPSが30～80%増加しています。フォロワーが最新のコミットインデックスをより早く受信し、提案をより速くコミットできるようになったためです。

[c7146bd5]: https://github.com/etcd-io/etcd/commits/c7146bd5f2c73716091262edc638401bb8229144
[etcd-2.1-benchmark]: /ja/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/
[hack-benchmark]: https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark
[hey]: https://github.com/rakyll/hey
