镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Migrate from lukewarm to true cold runs #793

Closed

Description

@rschu1ze

This ticket is a tracking ticket for the migration from lukewarm to true cold runs. Details about this can be found here (original issue which triggered this) and in the benchmark rules about caching.

I suggest that we crowd-source this effort. Submissions are asked to

  • change their scripts (usually run.sh) to stop or kill the database before each first run of each query. This ensures all databases caches are cleared.
  • remove tag lukewarm-cold-run from their template.json file and from their result json files,
  • mark the submission as done in below list.

Affected submissions:

  • byconity
  • chdb
  • chdb-parquet
  • citus
  • clickhouse
  • clickhouse-datalake
  • clickhouse-datalake-partitioned
  • clickhouse-parquet
  • clickhouse-parquet-partitioned
  • clickhouse-tencent
  • clickhouse-web
  • cloudberry
  • cockroachdb
  • cratedb
  • daft-parquet
  • daft-parquet-partitioned
  • databend
  • datafusion
  • datafusion-partitioned
  • datafusion-vortex
  • datafusion-vortex-partitioned
  • doris
  • doris-parquet
  • drill
  • druid
  • duckdb
  • duckdb-dataframe
  • duckdb-datalake
  • duckdb-datalake-partitioned
  • duckdb-memory
  • duckdb-parquet
  • duckdb-parquet-partitioned
  • duckdb-vortex-partitioned
  • elasticsearch
  • glaredb
  • glaredb-partitioned
  • greenplum
  • heavyai
  • infobright
  • kinetica
  • mariadb
  • mariadb-columnstore
  • monetdb
  • mongodb
  • mysql
  • mysql-myisam
  • octosql
  • opteryx
  • oxla
  • pandas
  • paradedb
  • paradedb-partitioned
  • parseable
  • pg_clickhouse
  • pg_duckdb
  • pg_duckdb-indexed
  • pg_duckdb-parquet
  • pg_mooncake
  • pgpro_tam
  • pinot
  • polars
  • polars-dataframe
  • postgresql
  • postgresql-indexed
  • postgresql-orioledb
  • questdb
  • selectdb
  • siglens
  • singlestore
  • spark
  • spark-auron
  • spark-comet
  • spark-gluten
  • sqlite
  • starrocks
  • tidb
  • timescaledb
  • timescaledb-no-columnstore
  • ursa
  • victorialogs
  • yugabytedb

Activity

  1. xe-nvdk commented on Feb 18, 2026

    @xe-nvdk
    Contributor

    I can take a few, or do you prefer vendors taking theirs.

  2. alexey-milovidov commented on May 11, 2026

    @alexey-milovidov
    Member

    I want to refactor ClickBench scripts so that parts related to system's installation, start/stop, and running a query, are put in separate scripts and can be reused. This will be changed for the main ClickBench (not the 'hardware' or 'versions' variants). This will affect only systems that are installed locally (not cloud (managed) systems).

    For every system:

    Add install script. It will do all the work related to the environment preparation and installation of the system on a fresh VM. Does not have to include startup or health check.

    Add start, check, and stop scripts. start will start up the system (it could be empty if the system is stateless), stop stops it, check runs a trivial query to check if the system is responding, and returns success exit code if it does.

    Add load script. It will expect dataset files in a particular location and perform the load. It should delete the source files after loading, then do sync.

    Add query script. It accepts a query on stdin and runs it, returns query results in any format to stdout and query runtime in fractional seconds (e.g., 0.123) to stderr, it returns non-zero exit code on any error and prints error to stderr. The query runtime can be measured by the server if possible or inside the script. If there is already an old file named query doing other thing, it has to be renamed.

    Note about dataframe-like and embedded systems that are run inside a single process. For these systems, we have to turn them into an HTTP server (e.g., with a python module), so we can start it up and run queries separately.

    The benchmark.sh script should be unified: it will install the system, start it up, then download the dataset, unpack it if necessary, run the load script and measure its total time, then for each query: flush caches, restart the system, (wait for it to stop and wait for it to start), then run the query three times, collecting time or errors. As it will be hard to restart in-memory or dataframe systems, we can skip restart on each query for them.

    The forward-looking goal of this refactoring will be to allow changing the datasets or the sets of queries or benchmark parameters easily, and also provide an online service to run queries on different systems.

    After done with the refactoring, test that the benchmark still works for all affected systems.

  3. alexey-milovidov commented on May 11, 2026

    @alexey-milovidov
    Member

    Implemented in #860.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions