ベンチマークドライバー¶
ベンチマークドライバーは、Prestoクラスタでのクエリの性能を測定するために使用できます。 トランクの性能を継続的に測定するために使用しています。
presto-benchmark-driver-0.289-executable.jarをダウンロードし、presto-benchmark-driver
に名前を変更してから、chmod +x
で実行可能にします。
スイート¶
suite.json
ファイルを作成します。
{
"file_formats": {
"query": ["single_.*", "tpch_.*"],
"schema": [ "tpch_sf(?<scale>.*)_(?<format>.*)_(?<compression>.*?)" ],
"session": {}
},
"legacy_orc": {
"query": ["single_.*", "tpch_.*"],
"schema": [ "tpch_sf(?<scale>.*)_(?<format>orc)_(?<compression>.*?)" ],
"session": {
"hive.optimized_reader_enabled": "false"
}
}
}
この例には、file_formats
とlegacy_orc
の2つのスイートが含まれています。file_formats
スイートは、tpch_sf.*_.*_.*?
という正規表現に一致するすべてのスキーマで、single_.*
またはtpch_.*
という正規表現に一致する名前のクエリを実行します。legacy_orc
スイートは、最適化されたORCリーダーを無効にするセッションプロパティを追加し、tpch_sf.*_orc_.*?
スキーマでのみ実行されます。
クエリ¶
SQLファイルはsql
という名前のディレクトリに含まれており、.sql
ファイル拡張子が必要です。クエリの名前は、拡張子を除いたファイル名です。
出力¶
ベンチマークドライバーは、ウォールクロック時間、すべてのPrestoプロセスで使用された合計CPU時間、およびクエリで使用されたCPU時間を測定します。各タイミングについて、ドライバーはクエリのランの中央値、平均、標準偏差を報告します。プロセスとクエリのCPU時間の差はクエリオバーヘッドであり、通常はガベージコレクションによるものです。以下は、上記のfile_formats
スイートからの出力です。
suite query compression format scale wallTimeP50 wallTimeMean wallTimeStd processCpuTimeP50 processCpuTimeMean processCpuTimeStd queryCpuTimeP50 queryCpuTimeMean queryCpuTimeStd
============ ============== =========== ====== ===== =========== ============ =========== ================= ================== ================= =============== ================ ===============
file_formats single_varchar none orc 100 597 642 101 100840 97180 6373 98296 94610 6628
file_formats single_bigint none orc 100 238 242 12 33930 34050 697 32452 32417 460
file_formats single_varchar snappy orc 100 530 525 14 99440 101320 7713 97317 99139 7682
file_formats single_bigint snappy orc 100 218 238 35 34650 34606 83 33198 33188 83
file_formats single_varchar zlib orc 100 547 543 38 105680 103373 4038 103029 101021 3773
file_formats single_bigint zlib orc 100 282 269 23 38990 39030 282 37574 37496 156
上記の出力は、ドライバーが出力する標準のTSVから可読性のために再フォーマットされていることに注意してください。
ドライバーは、スキーマ名またはSQLファイルから値を抽出することにより、出力に追加の列を追加できます。上記のスイートファイルでは、スキーマ名にはcompression
、format
、scale
という名前の正規表現キャプチャグループが含まれているため、tpch_sf100_orc_none
、tpch_sf100_orc_snappy
、tpch_sf100_orc_zlib
というスキーマを含むカタログでクエリを実行すると、上記の出力結果が得られます。
追加の出力列を作成するもう1つの方法は、SQLファイルにタグを追加することです。たとえば、次のSQLファイルはprojection
とfilter
の2つのタグを宣言しています。
projection=true
filter=false
=================
SELECT SUM(LENGTH(comment))
FROM lineitem
これにより、ドライバーはこのクエリの各実行についてこれらの値を出力します。
CLI引数¶
presto-benchmark-driver
プログラムには、実行するスイートとクエリ、ウォームアップ実行回数、測定実行回数を制御するための多くのCLI引数があります。すべてのコマンドライン引数は、--help
オプションで確認できます。