
ParadigmがFloodを導入:ブロックチェーンノードの負荷テストのための強力なツール
TechFlow厳選深潮セレクト

ParadigmがFloodを導入:ブロックチェーンノードの負荷テストのための強力なツール
本稿では、ブロックチェーンノードのパフォーマンス特性について前例のない視点を提供する負荷テストツール「Flood」について紹介する。
執筆:Storm Slivkoff,Georgios Konstantopoulos
翻訳:TechFlow

はじめに
負荷テストは、信頼性が高く、高性能なデータシステムを開発する上で不可欠なステップです。しかし、暗号資産インフラの開発では、負荷テストは十分に活用されていません。このギャップを埋めるため、RPCエンドポイントのパフォーマンス分析に特化したベンチマークツール「Flood」を紹介します。
当初、我々はRethの最適化と、異なる負荷条件下でのレイテンシおよびスループットのトレードオフを理解するためにFloodを開発しました。その後、FloodはReth以外のさまざまな暗号資産インフラのパフォーマンス最適化にも極めて有用であることがわかりました。
さっそく見ていきましょう。
負荷テストとは何か、なぜ重要なのか?
負荷テストとは、システムが異なるワークロードを受けた際のパフォーマンス特性の変化を測定することです。このアプローチの核心的な洞察は、システムが増大する負荷にさらされるにつれて、スループット、レイテンシ、エラーレートといったパフォーマンス指標が通常低下することです。そのため、制御されたさまざまな負荷下でのシステム挙動を観察することで、ボトルネックや障害モード、最終的な性能限界を明らかにできます。
負荷テストから得られる情報は多岐にわたります。開発中のシステムに対しては、どのボトルネックを優先的に改善すべきかを明確にできます。二つのシステムを比較する際には、どちらがより高性能または信頼性が高いかを示すことができます。特に重要なケースとして、単一のシステムの異なるハードウェア・ソフトウェア構成を比較することも可能です。いずれの場合でも、負荷テストにより、高度に最適化されたシステムの開発が可能になります。
ブロックチェーンノードの負荷テスト方法
本稿では、ブロックチェーンノードからデータを取得するために一般的に使用される通信プロトコルであるRPCに焦点を当てます。
現在、RPCのパフォーマンスを評価する最も一般的な方法は、負荷テストではなく、レイテンステストです。つまり、RPCノードにリクエストを送信し、応答を得るまでの時間を計測するというものです。多くのWebサイトで、各種RPCプロバイダーに対するレイテンステストの結果を見ることができます。しかし残念ながら、このようなテストでは、システムが負荷下でどのように動作するかについての情報はほとんど得られません。
ブロックチェーンにおけるワークロードは、主に二つの側面で変化します。第一に「量」です。1秒あたり10,000件のリクエストは、1秒あたり100件のリクエストよりもシステムに大きな負荷を与えます。もう一つは「RPCメソッドの種類」です。ブロックチェーンノードから取得できるデータの種類ごとに、対応するRPCメソッドがあります。たとえば、ブロック、トランザクション、ログ、トレースなどです。各RPCメソッドはシステムに異なる種類の負荷を与えます。一部のメソッドはストレージI/Oに依存し、他のものはCPUに依存します。
Floodとは?
これらの原則に基づき、「Flood」という負荷テストツールを開発しました。従来のレイテンステストとは異なり、Floodは負荷テストを実施し、関連するすべてのRPCメソッドにテスト範囲を拡張することで、RPCエンドポイントのパフォーマンス特性をこれまでにない詳細度で可視化します。

Floodは以下の三つの基本コンポーネントから構成されています:
-
呼び出し生成エンジン:Floodは、さまざまなブロックチェーンワークロードに類似したパラメータ分布を持つ多数のRPC呼び出しセットを生成します。完全なブロックチェーン履歴をカバーするために、Paradigm Data Portalのデータセットを利用しています。
-
負荷テストエンジン:次に、Go言語で書かれた高性能負荷テストツールVegetaを用いて、これらの呼び出しを用いたRPCエンドポイントへの負荷テストをFloodが編成します。
-
レポートエンジン:テスト実行後、Floodはさまざまなグラフ、表、レポートを使って結果を要約します。これらの要約は、スクリプトやデータとの統合が容易です。
各コンポーネントは高度に設定可能であり、幅広いテストシナリオと環境に対応できます。
Floodができること
Floodの通常の操作では、ユーザーがテスト対象のRPCメソッドとRPCエンドポイントのリストを指定します。たとえば、Rethの二つのバージョンにおけるeth_getLogsのパフォーマンスを比較したい場合があります。Floodは、これらのRPCエンドポイントをテストするために、異なるレベルの制御負荷を適用します。例えば、eth_getLogsを1秒あたり1,000、2,000、4,000、8,000リクエストの速度で実行するかもしれません。Floodはその後、負荷の変化に対するパフォーマンス指標の変化を表形式やグラフでまとめます。出力は次のようになります:

負荷下でのパフォーマンス指標の劣化の具体的な様子は、システムのボトルネックや最終的な性能限界に関する豊かな知見を提供します。
さらに、Floodは高度なユーザー向けに以下のような高度な機能も提供しています:
-
Floodは「ストレステスト」(時間とともに徐々に負荷を増加)、「ピークテスト」(突然の大規模な負荷の後、小規模な負荷)、および「ソakingテスト」(長時間にわたる負荷)など、さまざまな負荷テストプランを使用できます。
-
ネットワークボトルネックによるノイズを排除するため、Floodは各RPCノード上でローカルに負荷テストを実行するように編成できます。
-
Floodには「等価性」テストモードがあり、各RPCエンドポイントが同じ応答を返すかどうかをチェックできます。
なぜFloodを開発したのか?
Paradigmでは、Rethという新しいノード実装を開発しており、その主要目標の一つがパフォーマンスです。私たちはRethのパフォーマンス特性を詳細に把握するためにFloodを開発しました。Floodを用いて、さまざまなワークロードおよびシステム構成下で現れる多数のRethのパフォーマンスボトルネックを特定し、それらを解決してきました。Floodによって、コードベースの変更がエンドツーエンドのシステムパフォーマンスにどう影響するかを、開発者が明確に確認できる緊密なフィードバックループを構築できました。
Rethに加えて、FloodはRPCノードに関連する多くの未解決問題にも貢献できると考えています:
-
ノードを運用する際、どのハードウェア仕様が最も重要か?ストレージI/OとRAM速度、RAM容量、CPU速度の相対的な重要性は?RAIDは価値があるか?
-
各第三者RPCプロバイダーの各RPCメソッドにおける実効的なレート制限は何か?
-
どのノードクライアントが、異なるタイプのワークロードに対して最良のパフォーマンスを提供するか?
結論
本記事では、ブロックチェーンノードのパフォーマンス特性を前例のない詳細度で明らかにする負荷テストツール「Flood」を紹介しました。当初はRethの開発最適化のために構築されましたが、Floodは他の高パフォーマンス暗号資産インフラの開発にとっても重要なツールになると信じています。皆さんがFloodを用いて、より高性能で信頼性の高いシステムを構築していくことを楽しみにしています。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














