- 印刷する
- PDF
Blockchain Service ベンチマーク
- 印刷する
- PDF
VPC環境で利用できます。
この章では、Blockchain Serviceノード別リソース割り当て量とノード構成に応じたパフォーマンス数値変化をテストした結果を表示します。
本テストは、NAVERクラウドプラットフォーム環境で構築されるHyperledger Fabricを基準にパフォーマンスを測定した結果です。測定結果はテストMachineのハードウェア性能とSmart Contractの複雑度など様々な要素に影響される場合があります。
そのため、これらの数字はあくまで参考程度に考えてください。
Hyperledger Fabric財団でテストした結果を確認するには、以下のページを参考にしてください。
テスト環境
- Hyperledger Fabric Version : 2.2.3
- テストMachine環境
- OS : CentOS Linux release 7.3.1611 (Core)
- Processor : Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz
- vCPU(s) : 16
- Thread(s) per core : 2
- RAM : 32GB
- HDD : 50GB SSD
Network構成とテスト設定
パフォーマンステストは、以下の図のように1つのOrdererに2つのPeerのあるNetwork構成を基本的に使用します。NetworkはK8sクラスタ環境にノードが配布されています。
- テストツール:Hyperledger Caliper https://hyperledger.github.io/caliper/
- チェーンコード:Fabcar https://github.com/hyperledger/fabric-samples/tree/release-2.2/fabcar/go
- テストネットワーク構成図
パフォーマンステストReport
1. Orderer/Peerのリソースサイズに応じたパフォーマンス比較
- Case 1-1
- Orderer:1台、0.35vCPU、700MBメモリ
- Peer:2台(levelDB)、1.1vCPU、2.8GBメモリ
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 103543 | 0 | 1725.6 | 0.06 | 0.00 | 0.01 | 1725.4 |
Write Transaction | 18023 | 0 | 300.4 | 23.23 | 0.05 | 12.74 | 245.6 |
- Case 1-2
- Orderer:1台、1.75vCPU、1.4GBメモリ
- Peer:2台(levelDB)、1.1vCPU、2.8GBメモリ
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 104489 | 0 | 1741.4 | 0.05 | 0.00 | 0.01 | 1741.3 |
Write Transaction | 26699 | 0 | 445.0 | 2.06 | 0.04 | 0.09 | 430.3 |
Case 1-2の結果のように、Orderer CPU/メモリリソースのサイズに応じてCase 1-1に比べwriteパフォーマンスが約57%増加したことが確認できます。
2. Peer CouchDB使用時のリソースサイズに応じたパフォーマンス比較
- Case 2-1
- Orderer:1台、0.35vCPU、700MBメモリ
- Peer:2台(1.1vCPU、2.8GBメモリ)、CouchDB2台(1vCPU、2GBメモリ)
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 94280 | 0 | 1571.2 | 4.74 | 0.00 | 0.60 | 1571.0 |
Write Transaction | 15563 | 0 | 259.3 | 40.67 | 0.08 | 21.72 | 154.7 |
- Case 2-2
- Orderer:1台、1.75vCPU、1.4GBメモリ
- Peer:2台(1.1vCPU、2.8GBメモリ)、CouchDB2台(2vCPU、2GBメモリ)
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 98139 | 861 | 1649.8 | 5.66 | 0.00 | 1.39 | 1619.3 |
Write Transaction | 16718 | 0 | 278.6 | 11.28 | 0.09 | 7.31 | 235.9 |
- Case 2-3
- Orderer:1台、1.75vCPU、1.4GBメモリ
- Peer:2台(2.2vCPU、2.8GBメモリ)、CouchDB2台(2vCPU、2GBメモリ)
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 101933 | 0 | 1698.8 | 0.05 | 0.00 | 0.01 | 1698.6 |
Write Transaction | 17854 | 0 | 297.5 | 8.01 | 0.08 | 4.44 | 262.6 |
Orderer/ Peer / CouchDB CPUのリソースサイズに応じてWrite/Readパフォーマンスが向上したことが確認できます。 LevelDBは、CouchDBに比べWriteパフォーマンスが約+60%の差異が発生する場合があります。
3. Peer数に応じたReadパフォーマンス比較
- Case 3-1
- Orderer:1台、0.35vCPU、700MBメモリ
- Peer:3台(levelDB)、1.1vCPU、2.8GBメモリ
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 124493 | 0 | 2074.7 | 0.28 | 0.00 | 0.04 | 2073.3 |
Write Transaction | 18117 | 0 | 301.9 | 33.50 | 0.05 | 17.66 | 237.0 |
- Case 3-2
- Orderer:1台、0.35vCPU、700MBメモリ
- Peer:3台(1.1vCPU、2.8GBメモリ)、CouchDB3台(1vCPU、2GBメモリ)
Name | Success | Fail | Send Rate (TPS) | Max Latency (s) | Min Latency (s) | Avg Latency (s) | Throughput (TPS) |
---|---|---|---|---|---|---|---|
Read Transaction | 124110 | 0 | 2068.4 | 0.28 | 0.00 | 0.04 | 2067.4 |
Write Transaction | 15102 | 0 | 251.7 | 34.40 | 0.10 | 17.89 | 160.1 |
Peer数を増やすと、case 1-1、2-1に比べReadパフォーマンスがそれぞれ17~22%増加することが確認できます。