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とかは実装されてない
論文などで採用された実績
参考
reportsブランチに結果を入れてく運用らしい