ScalarDB のベンチマークをはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、ScalarDB のベンチマークにおける、計画、実行、分析の方法について説明します。体系的なベンチマーク手法を用いることにより、信頼性があり意味のある性能測定を行うことができ、システム設定、リソースサイジング、技術選択について情報に基づいた決定を下すことができます。
ベンチマークの計画
ベンチマーク実行前に慎重に計画することにより、無駄な労力を減らし、実用的な結果を得ることができます。
ベンチマークの目的を定義する
まず、ベンチマークから何を得たい かを明確にします。目的によって、後に続くワークロード、メトリクス、環境、設定の決定が決まります。
一般的なベンチマークの目的には以下があります:
- システム比較: ScalarDB を類似機能を提供する他のシステムと比較し、要件に最も適したシステムを決定します。
- スケーラビリティ検証: 特定のワークロード下でノードを追加したり並行性を増やしたときに、ScalarDB が期待通りにスケールすることを確認します。
- コスト見積もり: 必要な性能を達成するために必要なリソースに洗い出します。
- 性能検証: 特定のワークロード下で ScalarDB が最低性能しきい値を満たすことを確認します。
性能メトリクスを理解する
ベンチマークの2つの基本的な性能メトリクスは、スループットとレイテンシです。スループットは、システムが単位時間当たりに完了するトランザクション数を測定し、秒当たりトランザクション (TPS) として表現されます。レイテンシは、トランザクション送信から応答受信までの経過時間を測定し、ミリ秒 (ms) で表現されます。
スループットとレイテンシは関連していますが異なります。システムは高いスループットを達成する一方で個々のトランザクションが高いレイテンシになる場合もあり、その逆も同様です。システム性能の状況を完全に把握するためには両方を測定することが重要です。
レイテンシを計測する際は、平均値だけでなくパーセンタイル分布 (p50、p95、p99) を含めてください。平均レイテンシは、ユーザエクスペリエンスに影響するテールレイテンシ問題を隠してしまう可能性があります。
ワークロードを選択する
性能はワークロードによって大幅に異なります。スループット値は、それを生成したワークロードと組み合わせた場合にのみ意味があります。両方とも 1,000 TPS を達成する2つのシステムを考えてみてください。一方のシステムがトランザクション当たり10回の読み取り変更書き込み (RMW) 操作を実行し、もう一方が1回の RMW を実行する場合、最初のシステムは同じ TPS 値を報告しているにもかかわらず、10倍の作業を行 っています。
ワークロードを設計する際は、以下の要因を考慮してください:
- 操作ミックス: 読み取りと書き込みの比率。
- トランザクション当たりの操作数: 単一トランザクション内の操作数。
- アクセスパターン: ホットスポットに向かって偏っているかユニフォームか。
- 並行性レベル: 並行スレッド数。
- データセットサイズ: ベンチマークが操作するデータの総量。
- レコードサイズ: ベンチマークが操作する各レコードのサイズ。
異なる条件下でシステムがどのように動作するかを理解するため、実験間で並行性レベルとアクセスパターンを変更してください。
比較ベースラインを定義する
ScalarDB を他のシステムと比較する際は、比較が公平で結果が解釈可能であることを確認してください。
まず、同じ保証を提供するシステムを使用することで公平な比較を確保してください。複数のデータベースを跨ぐマルチデータベーストランザクションが要件である場合、当該トランザクションをサポートしないシステムと ScalarDB を比較することは、システムが根本的に異なる問題を解決しているため意味がありません。ただし、マルチデータベーストランザクションが必須ではなくオプ ションである場合、調停のオーバーヘッドを測定するために2つを比較することは有効です。その場合は、比較が一般的なシステム性能ではなく調停オーバーヘッドを測定していることを明示的に述べてください。
次に、一度に1つの変数を変更してください。設定やシステムを比較する際は、実験ごとに1つのパラメータのみを変更してください。複数の変数を同時に変更すると、どの変数が観察された性能差を引き起こしたかを特定できません。
一貫性保証が異なるシステム (例: 結果一貫性 vs. 線形化可能な一貫性)を、違いを考慮せずに比較することは、誤解を招く結論につながります。性能結果と並んで、各システムが提供する保証を常に文書化してください。
期待される性能を推定する
ベンチマーク実行前に、ワークロードとシステムの理解に基づいて期待される性能を推定してください。ベンチマークは性能推定と性能測定の組み合わせです。推定な しの測定は検証が困難です。
推定を作成するには、まずワークロードが実行する操作 (読み取り、書き込み、コミット) を特定します。次に、ScalarDB が各トランザクションで実行する Consensus Commit プロトコルのフェーズを確認し、ストレージバックエンドとネットワーク特性に基づいてフェーズごとのレイテンシを合計して、単一トランザクションのレイテンシを推定します。最後に、期待される並行性をこの単一トランザクションレイテンシで割って、大まかなスループット推定値を導き出します。
ScalarDB アプリケーションの性能をモデル化する際、支配的なコスト要因は環境によって異なります。ストレージ I/O が高速な最新の環境では、ネットワークホップ数がトランザクションレイテンシを決定する主要因子であるため、各トランザクションフェーズが必要とするネットワークラウンドトリップを数えることで合理的なレイテンシ推定が得られます。しかし、大きなデータセットと I/O 集約的ワークロードでディスクスループットがボトルネックとなる環境では、トランザクション当たりのディスク読み取り・書き込み数が推定のより良い基準となります。
推定は正確である必要はありません。大雑把な桁数推定でも、設定ミスの検出に役立ちます。例えば、設定エラーが性能を抑制している場合、推定がなければ測定結果だけから問題を検出する方法がありません。逆に、推定と測定が一致すれば、両方とも正しい可能性が高いです。不一致の場合、その差異を調査することで、推定またはシステム設定のエラーが明らかになることがよくあります。
環境の準備
このセクションでは、インフラストラクチャの設定、ベースライン測定の確立、ベンチマークツールの準備について説明します。
インフラストラクチャの準備
テスト環境はベンチマーク結果に直接影響します。安定したコンピューティングリソースを使用し、性能のばらつきを生じさせるクラウドインスタンスタイプを避けてください。
クラウド仮想マシンは他のテナントと物理ハードウェアを共有するため、性能は時間帯によって異なる可能性があります。クレジットが枯渇すると CPU 性能が制限され一貫性のない結果を生成するため、バーストアブルインスタンス (例: AWS Tシリーズ) を使用しないでください。同様に、余剰容量を使用しており、ベンチマーク実行中に回収される可能性があるため、スポットインスタンスやプリエンプティブルインスタンスも使用しないでください。
安定したインスタンスタイプの選択に加えて、リソースをワークロードに合わせてください。例えば、ワークロードが I/O 集約的な場合、高い I/O スループットのインスタンス (NVMe SSD でサポートされたインスタンスなど) をプロビジョニングしてください。そうしないと、I/O ボトルネックが実際のシステム性能を隠してしまう可能性があります。
ScalarDB Cluster のプロダクション級ベンチマークには、それぞれ 4 vCPU と 8 GB メモリを持つ最小3つのワーカーノードが推奨され、ScalarDB Cluster ポッドはポッドあたり CPU 2、メモリ 4 GB に制限されます。回復性テストのため、ノードを異なるアベイラビリティゾーンに配置してください。詳細については、ScalarDB Cluster の制作チェックリストを参照してください。
ベースライン環境性能の測定
ScalarDB をベンチマークする前に、環境の生の性能を測定してベースラインを確立し、早期にインフラストラクチャの問題を検出 してください。ベースライン性能測定に役立つツールは以下のとおりです:
これらのベースラインは、インフラストラクチャが期待通りに動作しているかどうか、また ScalarDB ベンチマーク中に観察されるボトルネックが ScalarDB ではなくインフラストラクチャに起因するかどうかの判断に役立ちます。
ベンチマークツールの準備
既存のベンチマークツールがワークロードをサポートしている場合は、カスタムツールを構築するのではなくそれを使用してください。確立されたツールを使用することで、測定エラーのリスクが減り、他の人が結果を再現しやすくなります。どのアプローチを選択しても、ワークロードが何をするかを理解することは重要です。
ScalarDB ベンチマークは、ScalarDB の公式ベンチマークツールです。Kelpie フレームワーク上に構築された標準ワークロード (TPC-C と YCSB 変種) を提供します。ベンチマークシナリオで ScalarDB ベンチマークがサポートしていないワークロードが必要な場合は、カスタムベンチマークを構築してください。その場合は、正確なタイミングとレポートを確保するため、測定インフラストラクチャとしての Kelpie の利用を検討してください。
リポジトリのクローン、ベンチマーク JAR の構築、Kelpie のダウンロード、スキーマの読み込み、ベンチマーク設定ファイルの作成を含む ScalarDB ベンチマークの設定手順については、ScalarDB ベンチマークリポジトリを参照してください。ワークロード固有パラメータの完全なリストについては、ScalarDB ベンチマークを参照してください。
ベンチマーク用の ScalarDB 設定
ベンチマーク実行前に、ベンチマーク目的に合致する性能パラメータで ScalarDB を設定してください。以下の接続モードのサブセクションは ScalarDB Cluster に固有です。性能関連プロパティは ScalarDB Core と ScalarDB Cluster 両方に適用されますが、設定場所が異なります (性能関連プロパティの調整を参照)。