基准驱动

基准驱动可用于测量openLooKeng集群中查询的性能。我们用它来连续测量主干的性能。

Maven Central下载合适版本的基准驱动可执行Jar文件,例如presto-benchmark-driver-1.0.1-executable.jar,重命名为presto-benchmark-driver后,使用chmod +x使其可执行。如果预期版本不存在,可以使用1.0.1

套件

创建suite.json文件:

  1. {
  2. "file_formats": {
  3. "query": ["single_.*", "tpch_.*"],
  4. "schema": [ "tpch_sf(?<scale>.*)_(?<format>.*)_(?<compression>.*?)" ],
  5. "session": {}
  6. },
  7. "legacy_orc": {
  8. "query": ["single_.*", "tpch_.*"],
  9. "schema": [ "tpch_sf(?<scale>.*)_(?<format>orc)_(?<compression>.*?)" ],
  10. "session": {
  11. "hive.optimized_reader_enabled": "false"
  12. }
  13. }
  14. }

此示例包含两个套件file_formatslegacy_orcfile_formats套件将在与正则表达式tpch_sf.*_.*_.*?匹配的所有模式中运行名称与正则表达式single_.*tpch_.*匹配的查询。legacy_orc套件添加了一个会话属性来禁用优化的ORC阅读器,并且只在tpch_sf.*_orc_.*?模式中运行。

查询

SQL文件包含在名为sql的目录中,并且必须具有.sql文件扩展名。查询的名称是不带扩展名的文件名。

输出

基准驱动将测量挂钟时间、所有openLooKeng进程使用的CPU总时间以及查询使用的CPU时间。对于每次计时,驱动报告查询运行的中位数、平均值和标准偏差。进程CPU时间和查询CPU时间之差是查询开销,这通常是垃圾收集器造成的。下面是上述file_formats套件的输出:

  1. suite query compression format scale wallTimeP50 wallTimeMean wallTimeStd processCpuTimeP50 processCpuTimeMean processCpuTimeStd queryCpuTimeP50 queryCpuTimeMean queryCpuTimeStd
  2. ============ ============== =========== ====== ===== =========== ============ =========== ================= ================== ================= =============== ================ ===============
  3. file_formats single_varchar none orc 100 597 642 101 100840 97180 6373 98296 94610 6628
  4. file_formats single_bigint none orc 100 238 242 12 33930 34050 697 32452 32417 460
  5. file_formats single_varchar snappy orc 100 530 525 14 99440 101320 7713 97317 99139 7682
  6. file_formats single_bigint snappy orc 100 218 238 35 34650 34606 83 33198 33188 83
  7. file_formats single_varchar zlib orc 100 547 543 38 105680 103373 4038 103029 101021 3773
  8. 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_snappy、 和 tpch_sf100_orc_zlib 的目录中运行查询,我们得到上面的输出。

创建其他输出列的另一种方法是向SQL文件添加标记。例如,下面的SQL文件中声明了两个标签projectionfilter

  1. projection=true
  2. filter=false
  3. =================
  4. SELECT SUM(LENGTH(comment))
  5. FROM lineitem

这将导致驱动为每次运行此查询输出这些值。

CLI参数

presto-benchmark-driver程序包含许多CLI参数,用于控制运行哪个套件和查询、预热运行的数量和测量运行的数量。通过--help选项可以看到所有的命令行参数。