效能基準驅動程式¶
效能基準驅動程式可用於測量 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
。file_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 名稱包含名為 compression
、format
和 scale
的正規表示式捕捉群組,因此如果我們在包含 schema tpch_sf100_orc_none
、tpch_sf100_orc_snappy
和 tpch_sf100_orc_zlib
的目錄中執行查詢,我們將得到上述輸出。
建立額外輸出欄位的另一種方法是將標籤新增至 SQL 檔案。例如,以下 SQL 檔案宣告兩個標籤 projection
和 filter
projection=true
filter=false
=================
SELECT SUM(LENGTH(comment))
FROM lineitem
這會導致驅動程式針對此查詢的每次執行輸出這些值。
CLI 參數¶
presto-benchmark-driver
程式包含許多 CLI 參數,可控制要執行的套件和查詢、熱身執行次數和測量執行次數。所有命令列參數都可以使用 --help
選項查看。