- ホストマシンが QPL の必要な前提条件を満たしていることを確認してください
-
cmake ビルドでは、deflate_qpl はデフォルトで有効になっています。誤って変更した場合は、ビルドフラグ
ENABLE_QPL=1を再確認してください - 一般的な要件については、ClickHouse の一般的なビルド手順を参照してください
ファイル一覧
benchmark_sample フォルダーには、Python スクリプトでベンチマークを実行するための例があります。
client_scripts には、一般的なベンチマークを実行するための Python スクリプトが含まれています。たとえば、次のとおりです。
client_stressing_test.py: [1~4] 台のサーバーインスタンスに対してクエリのストレステストを実行する Python スクリプトです。queries_ssb.sql: Star Schema Benchmark のすべてのクエリを一覧化したファイルですallin1_ssb.sh: ベンチマークのワークフロー全体を自動で一括実行するシェルスクリプトです。
database_files には、lz4/deflate/zstd コーデックに応じたデータベースファイルが保存されます。
Star Schema のベンチマークを自動実行する:
./output/
失敗した場合は、以下のセクションを参照してベンチマークを手動で実行してください。
定義
環境
- CPU: Sapphire Rapid
- OS 要件については QPL のシステム要件 を参照してください
- IAA のセットアップについては Accelerator Configuration を参照してください
- Python モジュールをインストールします:
生データを作成する
dbgen を使用して、以下のパラメーターで1億行のデータを生成します。
-s 20
*.tbl などのファイルは、./benchmark_sample/rawdata_dir/ssb-dbgen 配下に出力される想定です。
データベースのセットアップ
Connected to ClickHouse server というメッセージが表示されるはずです。これは、クライアントがサーバーとの接続の確立に成功したことを意味します。
以下の Star Schema Benchmark に記載されている 3 つの手順を完了してください。
- ClickHouse でテーブルを作成する
- データを挿入する。ここでは、入力データとして
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tblを使用してください。 - “star schema” を非正規化された “flat schema” に変換する
単一インスタンスでのベンチマーク
- ベンチマークを開始する前に、C6 を無効にし、CPU 周波数ガバナーを
performanceに設定してください
- ソケット間でのメモリバインドの影響をなくすため、
numactlを使ってサーバーを一方のソケットに、クライアントをもう一方のソケットにバインドします。 - 単一インスタンスとは、1 台のサーバーに 1 台のクライアントが接続されている構成を意味します
QPS_Final というキーワードで検索し、統計情報を収集してください
複数インスタンスでのベンチマーク
- スレッド数が多すぎることによるメモリボトルネックの影響を抑えるため、複数インスタンスでベンチマークを実行することを推奨します。
- マルチインスタンスとは、それぞれ専用のクライアントが接続された複数 (2 台または 4 台) のサーバー構成を指します。
- 1 つのソケット内のコアは均等に分割し、それぞれのサーバーに割り当てる必要があります。
- マルチインスタンスでは、コーデック ごとに新しいフォルダーを作成し、単一インスタンスと同様の手順でデータセットを挿入する必要があります。
- クライアント側では、テーブルの作成時およびデータの挿入時に、割り当てられたポートを指定して clickhouse を起動する必要があります。
- サーバー側では、ポートが割り当てられた特定の XML 設定ファイルを指定して clickhouse を起動する必要があります。マルチインスタンス用にカスタマイズされた XML 設定ファイルは、すべて ./server_config 配下に用意されています。
- [TBL_FILE_NAME] は、
./benchmark_sample/rawdata_dir/ssb-dbgen配下で正規表現*. tblに一致する名前のファイル名を表します。 --port=9001は、config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml でも定義されている、サーバーインスタンスに割り当てられたポートを表します。さらにインスタンスを増やす場合は、s3/s4 インスタンスに対応する値 9002/9003 に置き換える必要があります。指定しない場合、デフォルトのポートは 9000 で、これは最初のインスタンスですでに使用されています。
2 はインスタンス数を表しています。インスタンスを増やすには、これを 3 または 4 に置き換える必要があります。このスクリプトは最大 4 インスタンスまで対応しています。
すると、想定どおり 3 つのログが出力されるはずです:
QPS_Final をキーワードとして検索し、統計情報を収集してください
4インスタンスのベンチマーク設定は、上記の2インスタンスの場合と同様です。
レビュー用の最終レポートには、2インスタンスのベンチマークデータを使用することを推奨します。