ベンチマークドライバー

ベンチマークドライバーは、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_formatslegacy_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ファイルから値を抽出することにより、出力に追加の列を追加できます。上記のスイートファイルでは、スキーマ名にはcompressionformatscaleという名前の正規表現キャプチャグループが含まれているため、tpch_sf100_orc_nonetpch_sf100_orc_snappytpch_sf100_orc_zlibというスキーマを含むカタログでクエリを実行すると、上記の出力結果が得られます。

追加の出力列を作成するもう1つの方法は、SQLファイルにタグを追加することです。たとえば、次のSQLファイルはprojectionfilterの2つのタグを宣言しています。

projection=true
filter=false
=================
SELECT SUM(LENGTH(comment))
FROM lineitem

これにより、ドライバーはこのクエリの各実行についてこれらの値を出力します。

CLI引数

presto-benchmark-driverプログラムには、実行するスイートとクエリ、ウォームアップ実行回数、測定実行回数を制御するための多くのCLI引数があります。すべてのコマンドライン引数は、--helpオプションで確認できます。