效能基準驅動程式

效能基準驅動程式可用於測量 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_orcfile_formats 套件將執行名稱符合正規表示式 single_.*tpch_.* 的查詢,在所有符合正規表示式 tpch_sf.*_.*_.*? 的 schema 中。legacy_orc 套件會新增一個 session 屬性來停用最佳化的 ORC 讀取器,並且只在 tpch_sf.*_orc_.*? schema 中執行。

查詢

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 重新格式化。

驅動程式可以透過從 schema 名稱或 SQL 檔案中提取值來將額外欄位新增至輸出。在上面的套件檔案中,schema 名稱包含名為 compressionformatscale 的正規表示式捕捉群組,因此如果我們在包含 schema tpch_sf100_orc_nonetpch_sf100_orc_snappytpch_sf100_orc_zlib 的目錄中執行查詢,我們將得到上述輸出。

建立額外輸出欄位的另一種方法是將標籤新增至 SQL 檔案。例如,以下 SQL 檔案宣告兩個標籤 projectionfilter

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

這會導致驅動程式針對此查詢的每次執行輸出這些值。

CLI 參數

presto-benchmark-driver 程式包含許多 CLI 參數,可控制要執行的套件和查詢、熱身執行次數和測量執行次數。所有命令列參數都可以使用 --help 選項查看。