基准驱动程序

基准驱动程序可用于衡量 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.*_.*_.*? 匹配的所有模式中。 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 文件中提取值来向输出添加其他列。在上面的套件文件中,模式名称包含 compressionformatscale 的命名正则表达式捕获组,因此如果我们在包含模式 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 选项查看所有命令行参数。