基准驱动程序¶
基准驱动程序可用于衡量 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.*_.*_.*?
匹配的所有模式中。 legacy_orc
套件添加了一个会话属性以禁用优化的 ORC 阅读器,并且仅在 tpch_sf.*_orc_.*?
模式中运行。
查询¶
SQL 文件包含在一个名为 sql
的目录中,并且必须具有 .sql
文件扩展名。查询的名称是文件名称,不带扩展名。
输出¶
基准驱动程序将衡量所有 Presto 进程使用的墙上时间、总 CPU 时间以及查询使用的 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
的目录中运行查询,我们将获得上面的输出。
创建其他输出列的另一种方法是在 SQL 文件中添加标签。例如,以下 SQL 文件声明了两个标签, projection
和 filter
projection=true
filter=false
=================
SELECT SUM(LENGTH(comment))
FROM lineitem
这将导致驱动程序为每次运行此查询输出这些值。
CLI 参数¶
presto-benchmark-driver
程序包含许多 CLI 参数来控制要运行的套件和查询,预热运行次数以及测量运行次数。可以使用 --help
选项查看所有命令行参数。