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 集約的ワークロードでディスクスループットがボトルネックとなる環境では、トランザクション当たりのディスク読み取り・書き込み数が推定のより良い基準となります。
推定は正確である必要はありません。大雑把な桁数推定でも、設定ミスの検出に役立ちます。例えば、設定エラーが性能を抑制している場合、推定がなければ測定結果だけから問題を検出する方法がありません。逆に、推定と測定が一致すれば、両方とも正しい可能性が高いです。不一致の場合、その差異を調査することで、推定またはシステム設定のエラーが明らかになることがよくあります。