パラダイム: 詳細な負荷テスト ツール Flood
原作者:「Introducing flood: a load testing tool for benchmarking EVM nodes》
導入
原文編集:Deep Tide TechFlow
導入
負荷テストは、高い復元力と優れたパフォーマンスを備えたデータ システムを構築および開発するための重要なステップです。ただし、負荷テストは暗号通貨インフラストラクチャ開発では広く使用されていません。このギャップを埋めるために、RPC エンドポイント パフォーマンス分析用のベンチマーク ツールである Flood を導入できることを嬉しく思います。
当初、私たちは Reth を最適化し、さまざまな負荷の下でのレイテンシーとスループットのトレードオフを理解するためのツールとして Flood を使用しました。その後、Flood が Reth に加えてさまざまな種類の暗号通貨インフラストラクチャのパフォーマンスを最適化する上で重要な有用性を持っていることを発見しました。
見てみましょう。
負荷テストとは何ですか?なぜ重要ですか?
負荷テストとは、さまざまなワークロードにさらされたときのシステムのパフォーマンス特性の変化を測定することを指します。このアプローチの背後にある重要な洞察は、システムの負荷が増加すると、スループット、レイテンシー、エラー率などのパフォーマンス指標が通常低下するということです。したがって、さまざまな制御負荷の下でシステムがどのように動作するかを観察すると、システムのボトルネック、障害モード、究極のパフォーマンス能力などの情報が明らかになります。
負荷テストを通じて得られた情報は、さまざまな方法で使用できます。システムの開発中に負荷テストを行うと、どのシステムのボトルネックを優先して改善する必要があるかを明らかにできます。 2 つのシステムを比較する場合、負荷テストにより、どちらのシステムがよりパフォーマンスまたは信頼性が高いかを明らかにできます。この特殊なケースとして、負荷テストでは、単一システムの 2 つの異なるハードウェアまたはソフトウェア構成を比較できます。いずれの場合も、負荷テストにより高度に最適化されたシステム開発が可能になります。
ブロックチェーンノードの負荷テストを行うにはどうすればよいですか?
私たちは、ブロックチェーン ノードからデータを抽出するために一般的に使用される通信プロトコルである RPC に焦点を当てています。
現在、RPC パフォーマンスを測定する最も一般的な方法は負荷テストではなく、待機時間テストです。つまり、RPC ノードにリクエストを送信し、応答を取得するまでにかかる時間を測定します。さまざまな RPC プロバイダーの遅延テストは、さまざまな Web サイトで見つけることができます。残念ながら、このタイプのテストでは、負荷下でシステムがどのように動作するかについてほとんど明らかにならないため、ノードのパフォーマンスに関するビューが限定されます。
ブロックチェーンでは、ワークロードは 2 つの重要な点で変化する可能性があります。典型的な変数はサイズです。 1 秒あたり 10,000 リクエストの負荷は、1 秒あたり 100 リクエストの負荷よりもシステムに大きなストレスを与えます。もう 1 つの負荷変数は RPC メソッドです。ブロックチェーン ノードから抽出されるデータの種類ごとに異なる RPC メソッドがあります。たとえば、ブロック、トランザクション、ログ、トレースなどです。各 RPC メソッドは、システムに異なる種類の負荷を与えます。一部の RPC メソッドはメモリ IO バウンドですが、その他は CPU バウンドです。
洪水とは何ですか?
これらの原則に基づいて、Flood と呼ばれる負荷テスト ツールを開発しました。レイテンシー テストとは異なり、Flood は、負荷テストを通じて RPC エンドポイントのパフォーマンス特性に対する前例のないビューを提供し、テスト カバレッジを関連するすべての RPC メソッドに拡張します。
洪水は 3 つの基本コンポーネントで構成されます。
呼び出し生成エンジン: Flood は、さまざまな種類のブロックチェーン ワークロードに似たランダムなサンプリング分布を使用して、パラメーター化された RPC 呼び出しの大規模なセットを生成します。 Flood は、Paradigm Data Portal データセットを利用して、ブロックチェーンの歴史を完全にカバーします。
負荷テスト エンジン: Flood は、ベジータ (Go で書かれた高性能負荷テスト ツール) を調整し、これらの呼び出しを使用して RPC エンドポイントを負荷テストします。
レポート エンジン: Flood はテストを実行した後、さまざまなグラフ、表、レポートを使用して結果を要約します。これらの概要は、スクリプトやデータに簡単に統合できます。
各コンポーネントは高度に構成可能であるため、Flood は幅広いテスト シナリオと環境をカバーできます。
フラッドには何ができるのでしょうか?
Flood の通常の操作中に、ユーザーはテストする RPC メソッドと RPC エンドポイントのリストを指定します。たとえば、Reth の eth_getLogs の 2 つのバージョンのパフォーマンスをテストしたい場合があります。 Flood は、これらの RPC エンドポイントをテストするために、さまざまな制御ロードを実行します。たとえば、1 秒あたり 1,000、2,000、4,000、および 8,000 リクエストで eth_getLogs を実行する場合があります。次に、Flood は、負荷に応じてパフォーマンス メトリックがどのように変化するかを要約した表とグラフを表示します。出力は次のようになります。
負荷の下でパフォーマンス指標がどのように低下するのかを特定することで、システムのボトルネックや最終的なパフォーマンス能力を明らかにできる豊富な洞察が得られます。
さらに、Flood はあらゆるタイプのパワー ユーザーに適した高度な機能を提供します。
フラッドでは、「ストレス テスト」(時間の経過とともに徐々に負荷を増加させる)、「スパイク テスト」(大きな突然の負荷の後に小さな負荷が続く)、「ソーク テスト」(長時間にわたる負荷) など、さまざまな負荷テスト プランを使用できます。
フラッドは、負荷テストを調整して各 RPC ノードでネイティブ モードで実行し、ネットワークのボトルネックによって引き起こされるノイズを排除できます。
Flood には、各 RPC エンドポイントが同じ応答を返すかどうかをチェックする「平等」テスト モードがあります。
フラッドを構築する理由
Paradigm では、Reth と呼ばれる新しいノード実装を開発しており、パフォーマンスがその主な目標の 1 つです。私たちは、Reth のパフォーマンス特性を詳しく説明するために Flood を開発しました。私たちは Flood を使用して、さまざまなワークロードやシステム構成の下で多数の Reth パフォーマンスのボトルネックを明らかにしました。次に、それらのボトルネックに対処します。 Flood を使用することで、コードベースの変更がエンドツーエンドのシステム パフォーマンスにどのように反映されるかを Reth 開発者に高い可視性を与える緊密なフィードバック ループを構築しました。
Reth に加えて、Flood も RPC ノードに関連する多くの未解決の質問の解決に役立つと考えています。
ノードを実行するときに最も重要なハードウェア仕様はどれですか?ストレージ IO は、RAM 速度、RAM 容量、CPU 速度と比較してどの程度重要ですか? RAIDには価値があるのか?
サードパーティ RPC プロバイダーごとの RPC メソッドごとの実効レート制限はどれくらいですか?
結論は
結論は
このペーパーでは、ブロックチェーン ノードのパフォーマンス特性について前例のないビューを提供する負荷テスト ツールである Flood を主に紹介します。 Flood はもともと Reth の開発を最適化するために構築されましたが、他の種類の高性能暗号通貨インフラストラクチャの開発にとっても重要なツールになると私たちは考えています。他の企業が Flood を使用して独自の高性能で信頼性の高いシステムを構築する方法を見るのを楽しみにしています。


