Caliper
Hyperledger Caliperは、Linux Foundationが推進するオープンソースのプロジェクトの一つで、異なるブロックチェーンプラットフォームに対してベンチマークを実行するための一般的なフレームワーク。Caliperは、下記のブロックチェーン基盤をサポートしている。
Hyperledger Fabric(Ver 1.X)
jkcomment.icon < 2.x系もサポートしてるらしい
Hyperledger Sawtooth(Ver 1.0+)
Hyperledger Iroha(1.0 beta-3)
Hyperledger Burrow(Ver 1.0)
Hyperledger Besu(utilizing the Ethereum adapter)
Ethereum
FIKSCO BCOS
また、Caliperは下記の指標を計測することができる。
success rate
transaction/read throughput
transaction/read latency
resource consumption
Caliperは、一般的なモニタリングやインフラストラクチャソリューションと簡単に統合できるように、スケーラビリティと拡張性を考慮して設計されている。CaliperはNode.jsベースで、3つのレイヤで構成されている。
https://gyazo.com/848c498a6800b80847a7afdc4846db3b
Benchmark Layer
定義済みのベンチマークテストケース
プラグイン可能で設定可能なベンチマークエンジン
Interface & Core Layer
Blockchain NBIs - インストール、呼び出し、クエリなど
リソースモニタ - メモリ、CPU、ネットワークI/Oなど
パフォーマンス・アナライザ - レイテンシ、スループットなど
レポートジェネレータ - HTML形式のテストレポート
Adaptation Layer
NBIをDLTプロトコルに変換
アーキテクチャ
https://gyazo.com/e8aa1899f9cce8fe228cd6ba803c246c
処理の流れについて説明すると、図の左上の設定ファイルをCaliper CLIにimportすることでAdmin ClientとClient Factoryが生成され、Admin Clientはスーパーユーザーとみなされる。Client Factoryは、テスト負荷の実行を担当するClient Workerを生成する。Client Workerは対象システムにトランザクションを送信する。また、Client WorkerはRate Controlを経由して動作し、Rate ControlでTPS(Trasaction Per Second)が決まる。テスト中のすべてのトランザクションが保存される。これらのトランザクションの統計が記録され、あとで参照される。さらに、Resource Monitorは、リソースの消費も記録する。これらのデータはすべて1つのレポートにまとめられる。つまり測定結果はHTML形式で出力され、ブラウザ上で確認することができる。
https://gyazo.com/79f2d5566774ec9e00b79173da114adb
HTML形式のレポートサンプル
最初Caliper-cliにimportする設定ファイルには下記の項目が含まれる。
Workload Module
ワークロードロジック(workload.js)
Bencimark Configuration
シナリオ(benchmarkconfig.yaml)
Benchmark Configuration
計測を行うシステム(例: Hyperledger Fabric)のネットワーク設定(networkconfig.yaml)
Benchmark Artifacts
Chaincode
CA登録済のIdentityなど
メリット
柔軟なパフォーマンス計測が可能
マルチクライアントに対応しており、スケーラビリティを考慮したパフォーマンス計測が可能
いろんなブロックチェーン基盤をサポート
ドキュメントが充実
サンプル多め
デメリット
学習コストが高い
細かい設定が多くて手軽く触れない
(当たり前だが)Fabricの知識が必要
今後の展望
https://gyazo.com/dfc1db4ae1a407122d708822b1741ae6
jkcomment.icon < 2019年度のRoadmapだが、まだCorde adaptorとかは実装されてない
論文などで採用された実績
https://sites.duke.edu/hvs2/files/2018/11/perf_model_HLF_Harish_18.pdf
https://arxiv.org/pdf/1901.09873.pdf
https://www.persistent.com/wp-content/uploads/2018/07/research-paper-performance-characterization-of-hyperledger-fabric.pdf
https://image.samsungsds.com/us/en/insights/res/__icsFiles/afieldfile/2019/02/21/Blockchain-White-Paper-Accelerating-Throughput-in-Permissioned-Blockchain-Networks.pdf?queryString=20190307013920
参考
https://github.com/hyperledger/caliper
https://www.hyperledger.org/use/caliper
https://hyperledger.github.io/caliper/
https://www.infoq.com/jp/news/2018/05/Hyperledger-Caliper-Performance/
https://docs.google.com/document/d/1DQ6PqoeIH0pCNJSEYiw7JVbExDvWh_ZRVhWkuioG4k0/edit#heading=h.985y9yjnm17o
https://cdn.oreillystatic.com/en/assets/1/event/274/Hyperledger%20Caliper_%20A%20performance%20benchmark%20framework%20for%20multiple%20DLTs%20_sponsored%20by%20Huawei_%20Presentation.pdf
https://hyperledger.github.io/caliper-benchmarks/
reportsブランチに結果を入れてく運用らしい
https://github.com/hyperledger/caliper-benchmarks/tree/reports
https://static.sched.com/hosted_files/hgf20/08/HyperledgerGlobalForum_Caliper.pdf
#HyperLedger_Caliper #Hyperledger_Fabric