You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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,
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.
Activity
xe-nvdk commentedon Feb 18, 2026
I can take a few, or do you prefer vendors taking theirs.
alexey-milovidov commentedon May 11, 2026
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
installscript. 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, andstopscripts.startwill start up the system (it could be empty if the system is stateless),stopstops it,checkruns a trivial query to check if the system is responding, and returns success exit code if it does.Add
loadscript. It will expect dataset files in a particular location and perform the load. It should delete the source files after loading, then dosync.Add
queryscript. 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 namedquerydoing 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.shscript 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.
alexey-milovidov commentedon May 11, 2026
Implemented in #860.