# Benchmark: TPC-H TPC-H does allow scaling data generation and ingestion, and scaling the benchmarking driver. Scale-out can simulate distributed clients for the loading test and the throughput test [2]. This example shows how to benchmark 22 reading queries Q1-Q22 derived from TPC-H in PostgreSQL. > The query file is derived from the TPC-H and as such is not comparable to published TPC-H results, as the query file results do not comply with the TPC-H Specification. 1. Official TPC-H benchmark - http://www.tpc.org/tpch 1. A Cloud-Native Adoption of Classical DBMS Performance Benchmarks and Tools: https://doi.org/10.1007/978-3-031-68031-1_9 **The results are not official benchmark results. Exact performance depends on a number of parameters. You may get different results. These examples are solely to illustrate how to use bexhoma and show the result evaluation.** For a comparison of multiple DBMS (PostgreSQL, MonetDB, MySQL, MariaDB) see [TestCases.md](TestCases.md#tpc-h). ## Perform Benchmark - Power Test You will have to change the node selectors there (to names of nodes, that exist in your cluster - or to leave out the corresponding parameters): ```bash BEXHOMA_NODE_SUT="cl-worker11" BEXHOMA_NODE_LOAD="cl-worker19" BEXHOMA_NODE_BENCHMARK="cl-worker19" LOG_DIR="./logs_tests" BEXHOMA_MS=1 BEXHOMA_STORAGE_CLASS="shared" mkdir -p $LOG_DIR ``` For performing the experiment we can run the [tpch file](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/blob/master/tpch.py). Example: ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 1 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -ms $BEXHOMA_MS \ -tr \ -lr 64Gi \ -rr 64Gi \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_postgresql.log ``` This * starts a clean instance of PostgreSQL * fixed 64 Gi RAM (request `-rr` and limit `-lr`) * data directory inside a Docker container * creates TPC-H schema in the database * starts 8 loader pods (`-nlp`) * with a data generator (init) container each * generating a portion of TPC-H data of scaling factor 1 (`-sf`) * storing the data in a distributed filesystem (shared disk) * if data is already present: do nothing * with a loading container each * importing TPC-H data from the distributed filesystem * loading uses 8 threads (`-nlt`) * creates constraints (`-xic`) and indexes (`-xii`) and updates table statistics (`-xis`) after ingestion * runs 1 stream of TPC-H queries * data transfer is also measured (`-xdt`) * shows a summary ### Status You can watch the status while benchmark is running via `bexperiments status` ```bash Dashboard: Running Cluster Prometheus: Running Message Queue: Running Data directory: Running Result directory: Running +------------------+--------------+--------------+---------------+ | 1706255897 | sut | loaded [s] | loading | +==================+==============+==============+===============+ | MonetDB-BHT-8 | (1. Running) | 253.23 | | +------------------+--------------+--------------+---------------+ | MySQL-BHT-8-8 | (1. Running) | 0.61 | (8 Succeeded) | +------------------+--------------+--------------+---------------+ | PostgreSQL-BHT-8 | (1. Running) | 219.08 | | +------------------+--------------+--------------+---------------+ ``` The code `1706255897` is the unique identifier of the experiment. You can find the number also in the output of `tpch.py`. ### Cleanup The script is supposed to clean up and remove everything from the cluster that is related to the experiment after finishing. If something goes wrong, you can also clean up manually with `bexperiment stop` (removes everything) or `bexperiment stop -e 1706255897` (removes everything that is related to experiment `1706255897`). ## Evaluate Results At the end of a benchmark you will see a summary like doc_tpch_testcase_postgresql.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=1 * Type: tpch * Duration: 359s * Code: 1782120735 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=1) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1] times the number of benchmarking pods. * Experiment is run once. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222680 * datadisk:2758 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:64Gi * limits_memory:64Gi * eval_parameters * code:1782120735 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:---------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | PostgreSQL-1-1 | 1 | 1 | 121.00 | 0.00 | 16.00 | 8.00 | 91.00 | 8 | 0 | | | 0 | False | 29.75 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:---------------------|:----------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:---------------------| | PostgreSQL-1-1-1-1-1 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.33 | 11749.09 | 5280.00 | 0 | PostgreSQL-1-1-1-1-1 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:-----------------|:-----------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | PostgreSQL-1-1-1 | PostgreSQL-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.33 | 11749.09 | 5280.00 | 0 | ### Latency of Timer Execution [ms] | Queries | PostgreSQL-1-1-1-1-1 | |:----------------------------------------------------|-----------------------:| | Pricing Summary Report (TPC-H Q1) | 1236.87 | | Minimum Cost Supplier Query (TPC-H Q2) | 259.42 | | Shipping Priority (TPC-H Q3) | 357.31 | | Order Priority Checking Query (TPC-H Q4) | 154.73 | | Local Supplier Volume (TPC-H Q5) | 328.63 | | Forecasting Revenue Change (TPC-H Q6) | 193.53 | | Volume Shipping Query (TPC-H Q7) | 343.93 | | National Market Share (TPC-H Q8) | 192.52 | | Product Type Profit Measure (TPC-H Q9) | 688.55 | | Returned Item Reporting Query (TPC-H Q10) | 527.74 | | Important Stock Identification (TPC-H Q11) | 83.21 | | Shipping Modes and Order Priority (TPC-H Q12) | 285.71 | | Customer Distribution (TPC-H Q13) | 1106.00 | | Promotion Effect Query (TPC-H Q14) | 207.50 | | Top Supplier Query (TPC-H Q15) | 216.59 | | Parts/Supplier Relationship (TPC-H Q16) | 284.45 | | Small-Quantity-Order Revenue (TPC-H Q17) | 880.77 | | Large Volume Customer (TPC-H Q18) | 2815.50 | | Discounted Revenue (TPC-H Q19) | 57.47 | | Potential Part Promotion (TPC-H Q20) | 133.65 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 287.99 | | Global Sales Opportunity Query (TPC-H Q22) | 99.80 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Tests * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` This gives a survey about the errors and warnings (result set mismatch) and the latencies of execution per query. Moreover the loading times (schema creation, ingestion and indexing), the geometric mean of query execution times and the TPC-H metrics power and throughput are reported. Please note that the results are not suitable for being published as official TPC-H results. In particular the refresh streams are missing. To see the summary again you can simply call `bexperiments summary -e 1759316196` with the experiment code. ### Detailed Evaluation Results are transformed into pandas DataFrames and can be inspected in more detail. Detailed evaluations can be done using DBMSBenchmarker * [Dashboard](https://dbmsbenchmarker.readthedocs.io/en/latest/Dashboard.html) * [Jupyter Notebooks](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/tree/master/images/evaluator_dbmsbenchmarker/notebooks/) You can connect to an evaluation server in the cluster by `bexperiments dashboard`. This forwards ports, so you have * a DBMSBenchmarker dashboard in browser at http://localhost:8050 * a Jupyter notebook server at http://localhost:8888 containing the example notebooks You can connect to a local evaluation server by `bexperiments localdashboard`. This forwards ports, so you have * a DBMSBenchmarker dashboard in browser at http://localhost:8050 You can connect to a local jupyter server by `bexperiments jupyter`. This forwards ports, so you have * a Jupyter notebook server at http://localhost:8888 containing the example notebooks ## Adjust Parameters The script supports * exact repetitions for statistical confidence * variations to scan a large parameters space * combine results for easy evaluation There are various ways to change parameters. ### Manifests The YAML manifests for the components can be found in https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/tree/master/k8s ### SQL Scrips The SQL scripts for pre and post ingestion can be found in https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/tree/master/experiments/tpch ### Dockerfiles The Dockerfiles for the components can be found in https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/tree/master/images/tpch ### Command line You maybe want to adjust some of the parameters that are set in the file: `python tpch.py -h` ```bash usage: tpch.py [-h] [-aws] [-dbms {PostgreSQL,MonetDB,MySQL,MariaDB}] [-xlit LIMIT_IMPORT_TABLE] [-db] [-cx CONTEXT] [-e EXPERIMENT] [-m] [-mc] [-ms MAX_SUT] [-xdt] [-xqr NUM_RUN] [-nc NUM_CONFIG] [-ne NUM_QUERY_EXECUTORS] [-xnls NUM_LOADING_SPLIT] [-nlp NUM_LOADING_PODS] [-nlt NUM_LOADING_THREADS] [-nbp NUM_BENCHMARKING_PODS] [-nbt NUM_BENCHMARKING_THREADS] [-sf SCALING_FACTOR] [-t TIMEOUT] [-rr REQUEST_RAM] [-rc REQUEST_CPU] [-rct REQUEST_CPU_TYPE] [-rg REQUEST_GPU] [-rgt REQUEST_GPU_TYPE] [-rst {None,,local-hdd,shared}] [-rss REQUEST_STORAGE_SIZE] [-rnn REQUEST_NODE_NAME] [-rnl REQUEST_NODE_LOADING] [-rnb REQUEST_NODE_BENCHMARKING] [-tr] [-xii] [-xic] [-xis] [-xrcp] [-xshq] {profiling,run,start,load,empty,summary} Performs a TPC-H experiment. Data is generated and imported into a DBMS from a distributed filesystem (shared disk). positional arguments: {profiling,run,start,load,empty,summary} profile the import or run the TPC-H queries options: -h, --help show this help message and exit -aws, --aws fix components to node groups at AWS -dbms {PostgreSQL,MonetDB,MySQL,MariaDB}, --dbms {PostgreSQL,MonetDB,MySQL,MariaDB} DBMS -xlit LIMIT_IMPORT_TABLE, --limit-import-table LIMIT_IMPORT_TABLE limit import to one table, name of this table -db, --debug dump debug informations -cx CONTEXT, --context CONTEXT context of Kubernetes (for a multi cluster environment), default is current context -e EXPERIMENT, --experiment EXPERIMENT sets experiment code for continuing started experiment -m, --monitoring activates monitoring -mc, --monitoring-cluster activates monitoring for all nodes of cluster -ms MAX_SUT, --max-sut MAX_SUT maximum number of parallel DBMS configurations, default is no limit -xdt, --datatransfer activates transfer of data per query (not only execution) -xqr NUM_RUN, --num-run NUM_RUN number of runs per query -nc NUM_CONFIG, --num-config NUM_CONFIG number of runs per configuration -ne NUM_QUERY_EXECUTORS, --num-query-executors NUM_QUERY_EXECUTORS comma separated list of number of parallel clients -xnls NUM_LOADING_SPLIT, --num-loading-split NUM_LOADING_SPLIT portion of loaders that should run in parallel -nlp NUM_LOADING_PODS, --num-loading-pods NUM_LOADING_PODS total number of loaders per configuration -nlt NUM_LOADING_THREADS, --num-loading-threads NUM_LOADING_THREADS total number of threads per loading process -nbp NUM_BENCHMARKING_PODS, --num-benchmarking-pods NUM_BENCHMARKING_PODS comma separated list of number of benchmarkers per configuration -nbt NUM_BENCHMARKING_THREADS, --num-benchmarking-threads NUM_BENCHMARKING_THREADS total number of threads per benchmarking process -sf SCALING_FACTOR, --scaling-factor SCALING_FACTOR scaling factor (SF) -t TIMEOUT, --timeout TIMEOUT timeout for a run of a query -rr REQUEST_RAM, --request-ram REQUEST_RAM request ram for sut, default 16Gi -rc REQUEST_CPU, --request-cpu REQUEST_CPU request cpus for sut, default 4 -rct REQUEST_CPU_TYPE, --request-cpu-type REQUEST_CPU_TYPE request node for sut to have node label cpu= -rg REQUEST_GPU, --request-gpu REQUEST_GPU request number of gpus for sut -rgt REQUEST_GPU_TYPE, --request-gpu-type REQUEST_GPU_TYPE request node for sut to have node label gpu= -rst {None,,local-hdd,shared}, --request-storage-type {None,,local-hdd,shared} request persistent storage of certain type -rss REQUEST_STORAGE_SIZE, --request-storage-size REQUEST_STORAGE_SIZE request persistent storage of certain size -rnn REQUEST_NODE_NAME, --request-node-name REQUEST_NODE_NAME request a specific node for sut -rnl REQUEST_NODE_LOADING, --request-node-loading REQUEST_NODE_LOADING request a specific node for loading pods -rnb REQUEST_NODE_BENCHMARKING, --request-node-benchmarking REQUEST_NODE_BENCHMARKING request a specific node for benchmarking pods -tr, --test-result test if result fulfills some basic requirements -xii, --init-indexes adds indexes to tables after ingestion -xic, --init-constraints adds constraints to tables after ingestion -xis, --init-statistics recomputes statistics of tables after ingestion -xrcp, --recreate-parameter recreate parameter for randomized queries -xshq, --shuffle-queries have different orderings per stream ``` ## Monitoring [Monitoring](Monitoring.html) can be activated for DBMS only (`-m`) or for all components (`-mc`). Example: ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 10 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -m \ -mc \ -ms $BEXHOMA_MS \ -tr \ -lr 64Gi \ -rr 64Gi \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_monitoring.log ``` If monitoring is activated, the summary also contains a section like this: doc_tpch_testcase_monitoring.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=10 * Type: tpch * Duration: 810s * Code: 1782121108 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=10) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * System metrics are monitored by a cluster-wide installation. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1] times the number of benchmarking pods. * Experiment is run once. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:247132 * datadisk:27209 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:64Gi * limits_memory:64Gi * eval_parameters * code:1782121108 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:---------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | PostgreSQL-1-1 | 1 | 10 | 521.00 | 0.00 | 13.00 | 72.00 | 431.00 | 8 | 0 | | | 0 | False | 69.10 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:---------------------|:----------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|------:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:---------------------| | PostgreSQL-1-1-1-1-1 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 10.00 | 22 | 93 | 2.42 | 15346.13 | 8516.13 | 0 | PostgreSQL-1-1-1-1-1 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:-----------------|:-----------------|-----------------:|---------:|----------------:|------------:|------:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | PostgreSQL-1-1-1 | PostgreSQL-1-1-1 | 1 | 1 | 1 | 1 | 10.00 | 22 | 93 | 2.42 | 15346.13 | 8516.13 | 0 | ### Latency of Timer Execution [ms] | Queries | PostgreSQL-1-1-1-1-1 | |:----------------------------------------------------|-----------------------:| | Pricing Summary Report (TPC-H Q1) | 5737.81 | | Minimum Cost Supplier Query (TPC-H Q2) | 2586.17 | | Shipping Priority (TPC-H Q3) | 3375.10 | | Order Priority Checking Query (TPC-H Q4) | 1055.87 | | Local Supplier Volume (TPC-H Q5) | 2605.31 | | Forecasting Revenue Change (TPC-H Q6) | 1381.73 | | Volume Shipping Query (TPC-H Q7) | 2412.67 | | National Market Share (TPC-H Q8) | 1402.24 | | Product Type Profit Measure (TPC-H Q9) | 5462.73 | | Returned Item Reporting Query (TPC-H Q10) | 2321.08 | | Important Stock Identification (TPC-H Q11) | 789.36 | | Shipping Modes and Order Priority (TPC-H Q12) | 1947.82 | | Customer Distribution (TPC-H Q13) | 11955.14 | | Promotion Effect Query (TPC-H Q14) | 1911.01 | | Top Supplier Query (TPC-H Q15) | 1738.96 | | Parts/Supplier Relationship (TPC-H Q16) | 1257.39 | | Small-Quantity-Order Revenue (TPC-H Q17) | 6891.96 | | Large Volume Customer (TPC-H Q18) | 24596.89 | | Discounted Revenue (TPC-H Q19) | 318.35 | | Potential Part Promotion (TPC-H Q20) | 3632.19 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 2409.62 | | Global Sales Opportunity Query (TPC-H Q22) | 473.19 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Monitoring ### Loading phase: SUT deployment | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:-------------------|-------------:|----------:|---------------:|----------------------:| | PostgreSQL-1-1-1-1 | 674.81 | 5.27 | 6.19 | 22.33 | ### Loading phase: component data generator | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:-------------------|-------------:|----------:|---------------:|----------------------:| | PostgreSQL-1-1-1-1 | 0.00 | 0.00 | 0.00 | 0.00 | ### Loading phase: component loader | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:-------------------|-------------:|----------:|---------------:|----------------------:| | PostgreSQL-1-1-1-1 | 98.27 | 2.49 | 0.01 | 1.17 | ### Execution phase: SUT deployment | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:-------------------|-------------:|----------:|---------------:|----------------------:| | PostgreSQL-1-1-1-1 | 280.18 | 3.56 | 17.28 | 33.57 | ### Execution phase: component benchmarker | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:-------------------|-------------:|----------:|---------------:|----------------------:| | PostgreSQL-1-1-1-1 | 17.33 | 0.22 | 0.34 | 0.34 | ### Tests * TEST passed: Loading phase: SUT deployment contains no 0 or NaN in CPU [CPUs] * TEST skipped: Loading phase: component data generator contains 0 or NaN in CPU [CPUs] (data pre-existing) * TEST passed: Loading phase: component loader contains no 0 or NaN in CPU [CPUs] * TEST passed: Execution phase: SUT deployment contains no 0 or NaN in CPU [CPUs] * TEST passed: Execution phase: component benchmarker contains no 0 or NaN in CPU [CPUs] * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` This gives a survey about CPU (in CPU seconds) and RAM usage (in Gb) during loading and execution of the benchmark. PostgreSQL is fast, so we cannot see a lot (metrics are fetched every 30 seconds). ## Perform Benchmark - Throughput Test For performing the experiment we can run the [tpch file](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/blob/master/tpch.py). Example: ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 1 \ -nc 1 \ -ne 1,2 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -ms $BEXHOMA_MS \ -tr \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_throughput.log ``` This runs 3 streams (`-ne`), the first one as a single stream and the following 2 in parallel. doc_tpch_testcase_throughput.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=1 * Type: tpch * Duration: 434s * Code: 1782121952 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=1) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1, 2] times the number of benchmarking pods. * Experiment is run once. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222680 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782121952 * PostgreSQL-1-1-2-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222726 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782121952 * PostgreSQL-1-1-2-1-2 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222726 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782121952 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 1 Client 2: tpch (2 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 1 Client 2: tpch (2 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:---------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | PostgreSQL-1-1 | 1 | 1 | 122.00 | 1.00 | 17.00 | 8.00 | 92.00 | 8 | 0 | | | 0 | False | 29.51 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:---------------------|:----------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:---------------------| | PostgreSQL-1-1-1-1-1 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.33 | 11534.90 | 5280.00 | 0 | PostgreSQL-1-1-1-1-1 | | PostgreSQL-1-1-2-1-1 | PostgreSQL-1 | PostgreSQL-1-1-2 | PostgreSQL-1-1-2-1 | 1 | 2 | 1 | 1 | 1.00 | 22 | 14 | 0.31 | 12352.94 | 5657.14 | 0 | PostgreSQL-1-1-2-1-1 | | PostgreSQL-1-1-2-1-2 | PostgreSQL-1 | PostgreSQL-1-1-2 | PostgreSQL-1-1-2-1 | 1 | 2 | 1 | 1 | 1.00 | 22 | 14 | 0.31 | 12402.16 | 5657.14 | 0 | PostgreSQL-1-1-2-1-2 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:-----------------|:-----------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | PostgreSQL-1-1-1 | PostgreSQL-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.33 | 11534.90 | 5280.00 | 0 | | PostgreSQL-1-1-2 | PostgreSQL-1-1-2 | 1 | 2 | 1 | 2 | 1.00 | 44 | 14 | 0.31 | 12377.53 | 11314.29 | 0 | ### Latency of Timer Execution [ms] | Queries | PostgreSQL-1-1-1-1-1 | PostgreSQL-1-1-2-1-1 | PostgreSQL-1-1-2-1-2 | |:----------------------------------------------------|-----------------------:|-----------------------:|-----------------------:| | Pricing Summary Report (TPC-H Q1) | 1163.27 | 1160.95 | 1133.25 | | Minimum Cost Supplier Query (TPC-H Q2) | 253.54 | 248.38 | 248.79 | | Shipping Priority (TPC-H Q3) | 363.12 | 356.92 | 360.53 | | Order Priority Checking Query (TPC-H Q4) | 160.15 | 173.25 | 166.88 | | Local Supplier Volume (TPC-H Q5) | 315.09 | 316.74 | 327.94 | | Forecasting Revenue Change (TPC-H Q6) | 195.97 | 186.51 | 197.72 | | Volume Shipping Query (TPC-H Q7) | 401.34 | 376.37 | 402.59 | | National Market Share (TPC-H Q8) | 218.30 | 179.17 | 180.77 | | Product Type Profit Measure (TPC-H Q9) | 566.32 | 548.17 | 547.68 | | Returned Item Reporting Query (TPC-H Q10) | 413.02 | 400.54 | 369.55 | | Important Stock Identification (TPC-H Q11) | 90.78 | 97.77 | 100.61 | | Shipping Modes and Order Priority (TPC-H Q12) | 325.76 | 326.63 | 323.90 | | Customer Distribution (TPC-H Q13) | 1111.07 | 955.79 | 833.95 | | Promotion Effect Query (TPC-H Q14) | 222.58 | 195.00 | 207.68 | | Top Supplier Query (TPC-H Q15) | 245.63 | 206.96 | 211.65 | | Parts/Supplier Relationship (TPC-H Q16) | 299.47 | 229.81 | 214.79 | | Small-Quantity-Order Revenue (TPC-H Q17) | 851.94 | 627.04 | 591.87 | | Large Volume Customer (TPC-H Q18) | 2928.44 | 2815.77 | 2959.04 | | Discounted Revenue (TPC-H Q19) | 58.37 | 54.83 | 50.91 | | Potential Part Promotion (TPC-H Q20) | 145.95 | 134.80 | 134.92 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 298.93 | 292.69 | 314.54 | | Global Sales Opportunity Query (TPC-H Q22) | 100.95 | 98.35 | 96.60 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Tests * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` All executions use the same database, so loading times are the same. Per default, all 3 streams use the same random parameters (like DELTA in Q1) and run in ordering Q1-Q22. You can change this via * `-xrcp`: Each stream has it's own random parameters * `-xshq`: Use the ordering per stream as required by the TPC-H specification ## Use Persistent Storage The default behaviour of bexhoma is that the database is stored inside the ephemeral storage of the Docker container. If your cluster allows dynamic provisioning of volumes, you might request a persistent storage of a certain type (storageClass) and size. Example: ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 1 \ -nc 2 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -ms $BEXHOMA_MS \ -tr \ -rss 30Gi \ -rst $BEXHOMA_STORAGE_CLASS \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_storage.log ``` The following status shows we have a volumes of type `shared`. Every experiment running TPC-H of SF=1 at PostgreSQL will take the database from this volume and skip loading. In this example `-nc` is set to two, that is the complete experiment is repeated twice for statistical confidence. The first instance of PostgreSQL mounts the volume and generates the data. All other instances just use the database without generating and loading data. ```bash +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | Volumes | configuration | experiment | loaded [s] | timeLoading [s] | dbms | storage_class_name | storage | status | size | used | +====================================+=================+==============+==============+===================+============+======================+===========+==========+========+========+ | bexhoma-storage-monetdb-tpch-10 | monetdb | tpch-10 | True | 576 | MonetDB | shared | 100Gi | Bound | 100G | 21G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-monetdb-tpch-100 | monetdb | tpch-100 | True | 7061 | MonetDB | shared | 300Gi | Bound | 300G | 210G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-monetdb-tpch-3 | monetdb | tpch-3 | True | 215 | MonetDB | shared | 100Gi | Bound | 100G | 6.2G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-monetdb-tpch-30 | monetdb | tpch-30 | True | 1734 | MonetDB | shared | 150Gi | Bound | 150G | 63G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-mysql-tpch-1 | mysql | tpch-1 | True | 2178 | MySQL | shared | 30Gi | Bound | 30G | 11G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-mysql-tpch-10 | mysql | tpch-10 | True | 33932 | MySQL | shared | 150Gi | Bound | 150G | 36G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-postgresql-tpch-1 | postgresql | tpch-1 | True | 148 | PostgreSQL | shared | 100Gi | Bound | 50G | 2.7G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-postgresql-tpch-10 | postgresql | tpch-10 | True | 2581 | PostgreSQL | shared | 100Gi | Bound | 100G | 26G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | bexhoma-storage-postgresql-tpch-30 | postgresql | tpch-30 | True | 10073 | PostgreSQL | shared | 150Gi | Bound | 150G | 76G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ +------------------+--------------+--------------+---------------+ | 1707740320 | sut | loaded [s] | benchmarker | +==================+==============+==============+===============+ | PostgreSQL-BHT-8 | (1. Running) | 185.41 | (1. Running) | +------------------+--------------+--------------+---------------+ ``` The result looks something like doc_tpch_testcase_storage.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=1 * Type: tpch * Duration: 727s * Code: 1782122428 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=1) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Database is persisted to disk of type shared and size 30Gi. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1] times the number of benchmarking pods. * Experiment is run 2 times. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:219923 * datadisk:2757 * volume_size:30G * volume_used:2.7G * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782122428 * PostgreSQL-1-2-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:219923 * datadisk:2757 * volume_size:30G * volume_used:2.7G * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782122428 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 2 Client 1: tpch (1 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 2 Client 1: tpch (1 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:---------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | PostgreSQL-1-1 | 1 | 1 | 178.00 | 1.00 | 23.00 | 26.00 | 125.00 | 8 | 0 | | | 0 | False | 20.22 | | PostgreSQL-1-2 | 2 | 1 | 178.00 | 1.00 | 23.00 | 26.00 | 125.00 | 8 | 0 | | | 0 | False | 20.22 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:---------------------|:----------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:---------------------| | PostgreSQL-1-1-1-1-1 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.32 | 12024.32 | 5280.00 | 0 | PostgreSQL-1-1-1-1-1 | | PostgreSQL-1-2-1-1-1 | PostgreSQL-1 | PostgreSQL-1-2-1 | PostgreSQL-1-2-1-1 | 2 | 1 | 1 | 1 | 1.00 | 22 | 35 | 0.54 | 7087.28 | 2262.86 | 0 | PostgreSQL-1-2-1-1-1 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:-----------------|:-----------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | PostgreSQL-1-1-1 | PostgreSQL-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 15 | 0.32 | 12024.32 | 5280.00 | 0 | | PostgreSQL-1-2-1 | PostgreSQL-1-2-1 | 2 | 1 | 1 | 1 | 1.00 | 22 | 35 | 0.54 | 7087.28 | 2262.86 | 0 | ### Latency of Timer Execution [ms] | Queries | PostgreSQL-1-1-1-1-1 | PostgreSQL-1-2-1-1-1 | |:----------------------------------------------------|-----------------------:|-----------------------:| | Pricing Summary Report (TPC-H Q1) | 1156.81 | 11210.70 | | Minimum Cost Supplier Query (TPC-H Q2) | 265.83 | 5143.92 | | Shipping Priority (TPC-H Q3) | 331.23 | 3773.82 | | Order Priority Checking Query (TPC-H Q4) | 133.43 | 198.38 | | Local Supplier Volume (TPC-H Q5) | 283.41 | 339.13 | | Forecasting Revenue Change (TPC-H Q6) | 177.66 | 209.71 | | Volume Shipping Query (TPC-H Q7) | 365.05 | 399.37 | | National Market Share (TPC-H Q8) | 204.26 | 1472.49 | | Product Type Profit Measure (TPC-H Q9) | 577.47 | 624.11 | | Returned Item Reporting Query (TPC-H Q10) | 600.61 | 612.29 | | Important Stock Identification (TPC-H Q11) | 86.36 | 91.02 | | Shipping Modes and Order Priority (TPC-H Q12) | 321.20 | 333.18 | | Customer Distribution (TPC-H Q13) | 1292.86 | 1379.47 | | Promotion Effect Query (TPC-H Q14) | 222.48 | 218.09 | | Top Supplier Query (TPC-H Q15) | 225.85 | 224.15 | | Parts/Supplier Relationship (TPC-H Q16) | 250.09 | 248.20 | | Small-Quantity-Order Revenue (TPC-H Q17) | 654.87 | 631.71 | | Large Volume Customer (TPC-H Q18) | 2708.36 | 2990.60 | | Discounted Revenue (TPC-H Q19) | 50.99 | 56.17 | | Potential Part Promotion (TPC-H Q20) | 150.20 | 301.68 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 295.46 | 295.21 | | Global Sales Opportunity Query (TPC-H Q22) | 93.77 | 101.93 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Tests * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` The loading times for both instances of loading are the same, since both relate to the same process of ingesting into the database. Note the added section about `volume_size` and `volume_used` in the connections section. ## Fractional Scaling Factor TPC-H supports scaling factors that are fractional. Example: SF=0.1 ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 0.1 \ -nc 2 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -ms $BEXHOMA_MS \ -tr \ -rsr \ -rss 5Gi \ -rst $BEXHOMA_STORAGE_CLASS \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_fractional.log ``` results in doc_tpch_testcase_fractional.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=0.1 * Type: tpch * Duration: 743s * Code: 1782123168 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=0.1) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Database is persisted to disk of type shared and size 5Gi. Persistent storage is removed at experiment start. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1] times the number of benchmarking pods. * Experiment is run 2 times. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:219924 * datadisk:315 * volume_size:5.0G * volume_used:312M * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782123168 * PostgreSQL-1-2-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:219924 * datadisk:315 * volume_size:5.0G * volume_used:312M * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782123168 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 2 Client 1: tpch (1 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (1 pods) * DBMS PostgreSQL-1 - Experiment 2 Client 1: tpch (1 pods) ### Loading #### Per Run Traceback (most recent call last): File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/tpch.py", line 420, in experiment.process() ~~~~~~~~~~~~~~~~~~^^ File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/experiments/base.py", line 291, in process self.show_summary() ~~~~~~~~~~~~~~~~~^^ File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/experiments/tpch.py", line 159, in show_summary super().show_summary() ~~~~~~~~~~~~~~~~~~~~^^ File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/experiments/dbmsbenchmarker.py", line 120, in show_summary primary.show_summary(self) ~~~~~~~~~~~~~~~~~~~~^^^^^^ File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/benchmarks/base.py", line 155, in show_summary df_loading = self._show_loading_sections(experiment, is_multitenant) File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/benchmarks/base.py", line 91, in _show_loading_sections df = self.evaluator.get_summary_loading_per_run() File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/evaluators/dbmsbenchmarker.py", line 477, in get_summary_loading_per_run df = self.get_loading_per_run() File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/evaluators/base.py", line 545, in get_loading_per_run df = self.get_loading_per_connection() File "/home/perdelt/Git-projects/Benchmark-Experiment-Host-Manager/bexhoma/evaluators/base.py", line 523, in get_loading_per_connection df['SF'] = int(workload_properties['defaultParameters']['SF']) ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: invalid literal for int() with base 10: '0.1' ``` ## Refresh Stream TPC-H specifies RF1/RF2 operations that insert new orders and delete retired orders to keep the database current during a throughput test. `-xrs N` enables a parallel refresh stream that applies N RF1+RF2 pairs per benchmarking round, running in parallel with the query streams. For a spec-compliant throughput test, set N equal to the number of parallel query streams. Example: 3 parallel query streams with 3 RF1+RF2 pairs: ```bash bexhoma tpch \ -dbms PostgreSQL \ -sf 1 \ -ne 3 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -ms $BEXHOMA_MS \ -tr \ -xrs 3 \ -rnn $BEXHOMA_NODE_SUT -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_testcase_refresh.log ``` Use `-xrso N` to skip the first N already-applied refresh sets and continue from where a previous run stopped. doc_tpch_testcase_refresh.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=1 * Type: tpch * Duration: 403s * Code: 1782123923 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=1) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * Experiment is limited to DBMS ['PostgreSQL']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * SUT is fixed to cl-worker38. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [3] times the number of benchmarking pods. * Experiment is run once. ### Connections * PostgreSQL-1-1-1-1-1 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222681 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782123923 * PostgreSQL-1-1-1-1-2 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222681 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782123923 * PostgreSQL-1-1-1-1-3 uses docker image postgres:18.3 * RAM:540492877824 * CPU:Intel(R) Xeon(R) Gold 6430 * Cores:128 * host:6.8.0-111-generic * node:cl-worker38 * disk:222681 * datadisk:2757 * cpu_list:0-127 * args:['-c', 'max_connections=640', '-c', 'max_worker_processes=16', '-c', 'max_parallel_workers=16', '-c', 'max_parallel_workers_per_gather=8', '-c', 'max_parallel_maintenance_workers=4', '-c', 'shared_buffers=16GB', '-c', 'effective_cache_size=40GB', '-c', 'work_mem=512MB', '-c', 'maintenance_work_mem=2GB', '-c', 'autovacuum=off', '-c', 'wal_level=minimal', '-c', 'max_wal_senders=0', '-c', 'max_wal_size=32GB', '-c', 'checkpoint_timeout=1h', '-c', 'checkpoint_completion_target=1.0', '-c', 'lock_timeout=30s', '-c', 'idle_in_transaction_session_timeout=30000'] * requests_cpu:4 * requests_memory:16Gi * eval_parameters * code:1782123923 ### Workflow #### Actual * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (3 pods), tpch_refresh (1 pods) #### Planned * DBMS PostgreSQL-1 - Experiment 1 Client 1: tpch (3 pods), tpch_refresh (1 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:---------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | PostgreSQL-1-1 | 1 | 1 | 130.00 | 0.00 | 26.00 | 8.00 | 92.00 | 8 | 0 | | | 0 | False | 27.69 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:---------------------|:----------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:---------------------| | PostgreSQL-1-1-1-1-1 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 12 | 0.31 | 11746.33 | 6600.00 | 0 | PostgreSQL-1-1-1-1-1 | | PostgreSQL-1-1-1-1-2 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 11 | 0.28 | 12864.84 | 7200.00 | 0 | PostgreSQL-1-1-1-1-2 | | PostgreSQL-1-1-1-1-3 | PostgreSQL-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-1 | 1 | 1 | 1 | 1 | 1.00 | 22 | 11 | 0.27 | 13331.73 | 7200.00 | 0 | PostgreSQL-1-1-1-1-3 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:-----------------|:-----------------|-----------------:|---------:|----------------:|------------:|-----:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | PostgreSQL-1-1-1 | PostgreSQL-1-1-1 | 1 | 1 | 1 | 3 | 1.00 | 66 | 12 | 0.29 | 12629.84 | 19800.00 | 0 | ### tpch_refresh | connection | phase | job | experiment_run | client | benchmark_run | pod_count | benchmark_begin | benchmark_end | benchmark_duration | |:---------------------|:-----------------|:-------------------|-----------------:|---------:|----------------:|------------:|:--------------------|:--------------------|---------------------:| | PostgreSQL-1-1-1-2-1 | PostgreSQL-1-1-1 | PostgreSQL-1-1-1-2 | 1 | 1 | 2 | 1 | 2026-06-22 12:30:55 | 2026-06-22 12:30:57 | 2 | ### Latency of Timer Execution [ms] | Queries | PostgreSQL-1-1-1-1-1 | PostgreSQL-1-1-1-1-2 | PostgreSQL-1-1-1-1-3 | |:----------------------------------------------------|-----------------------:|-----------------------:|-----------------------:| | Pricing Summary Report (TPC-H Q1) | 1197.84 | 1176.55 | 1150.63 | | Minimum Cost Supplier Query (TPC-H Q2) | 268.23 | 217.91 | 222.31 | | Shipping Priority (TPC-H Q3) | 334.51 | 299.32 | 299.50 | | Order Priority Checking Query (TPC-H Q4) | 168.19 | 142.73 | 136.14 | | Local Supplier Volume (TPC-H Q5) | 319.30 | 268.36 | 273.07 | | Forecasting Revenue Change (TPC-H Q6) | 203.53 | 172.29 | 175.51 | | Volume Shipping Query (TPC-H Q7) | 375.95 | 362.46 | 319.35 | | National Market Share (TPC-H Q8) | 177.14 | 205.04 | 154.65 | | Product Type Profit Measure (TPC-H Q9) | 551.16 | 561.68 | 524.43 | | Returned Item Reporting Query (TPC-H Q10) | 388.02 | 375.05 | 352.49 | | Important Stock Identification (TPC-H Q11) | 95.98 | 85.49 | 83.83 | | Shipping Modes and Order Priority (TPC-H Q12) | 314.60 | 276.47 | 263.54 | | Customer Distribution (TPC-H Q13) | 1020.60 | 756.30 | 764.17 | | Promotion Effect Query (TPC-H Q14) | 214.08 | 209.07 | 213.99 | | Top Supplier Query (TPC-H Q15) | 239.29 | 218.29 | 205.38 | | Parts/Supplier Relationship (TPC-H Q16) | 298.77 | 247.62 | 238.91 | | Small-Quantity-Order Revenue (TPC-H Q17) | 885.59 | 663.58 | 669.75 | | Large Volume Customer (TPC-H Q18) | 3087.54 | 3061.66 | 2869.76 | | Discounted Revenue (TPC-H Q19) | 52.03 | 52.47 | 53.29 | | Potential Part Promotion (TPC-H Q20) | 152.57 | 142.48 | 139.41 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 280.37 | 284.46 | 287.71 | | Global Sales Opportunity Query (TPC-H Q22) | 104.57 | 98.09 | 93.23 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Tests * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` The added `### tpch_refresh` section shows the wall-clock timing of the parallel refresh stream job: when it started, when it ended, and the total duration in seconds. ## Example: MonetDB TPC-H@100 This example shows how to run Q1-Q22 derived from TPC-H in MonetDB at SF=100. It covers the power and the throughput test. The refresh stream is not included. > The query file is derived from the TPC-H and as such is not comparable to published TPC-H results, as the query file results do not comply with the TPC-H Specification. Official TPC-H benchmark - http://www.tpc.org/tpch **The results are not official benchmark results. The exact performance depends on a collection of parameters. The purpose of this example is to illustrate the usage of bexhoma and to show how to evaluate results.** ### Generate and Load Data At first we generate TPC-H data at SF=100 (`-sf`) with 8 parallel generators (`-nlp`). The generated data is stored at the shared disk `data`. Moreover the data is loaded into an instance of MonetDB using again 8 parallel loaders. Afterwards the script creates contraints (`-xic`) and indexes (`-xii`) and updates table statistics (`-xis`). The database is located in another shared disk of storageClass shared (`-rst`) and of size 300Gi (`-rss`). The script also runs a power test (`-ne` set to 1) with timeout 1200s (`-t`) and data transfer activated (`-xdt`) once (`-nc` set to 1). To avoid conflicts with other experiments we set a maximum of 1 DBMS per time (`-ms`). Monitoring is activated (`-m`) for all components (`-mc`). The components, that is the SUT (`-rnn`) and the loader (`-rnl`) and the benchmark driver (`-rnb`), are fixed to specific nodes in the cluster. ```bash BEXHOMA_NODE_SUT="cl-worker11" BEXHOMA_NODE_LOAD="cl-worker19" BEXHOMA_NODE_BENCHMARK="cl-worker19" LOG_DIR="./logs_tests" BEXHOMA_MS=1 BEXHOMA_STORAGE_CLASS="shared" mkdir -p $LOG_DIR bexhoma tpch \ -dbms MonetDB \ -sf 100 \ -nc 1 \ -ne 1 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -m \ -mc \ -ms $BEXHOMA_MS \ -t 3600 \ -lr 256Gi \ -rr 256Gi \ -rss 1000Gi \ -rst $BEXHOMA_STORAGE_CLASS \ -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_monetdb_1.log ``` ### Status Data Disk You can watch the status of the data disk via `bexperiments data`. In the following example output we see we have generated TPC-H at SF=100 using 8 generators. The data set is split into 8 parts, each of about 14G size. In total the data set has a size of 106G. ```bash 14G /data/tpch/SF100/8/8 14G /data/tpch/SF100/8/3 14G /data/tpch/SF100/8/2 14G /data/tpch/SF100/8/4 14G /data/tpch/SF100/8/1 14G /data/tpch/SF100/8/5 14G /data/tpch/SF100/8/7 14G /data/tpch/SF100/8/6 106G /data/tpch/SF100/8 106G /data/tpch/SF100 ``` ### Status Database and Benchmark You can watch the status of experiments via `bexperiments status`. In the following example output we see all components of bexhoma are up and running. The cluster stores a MonetDB database corresponding to TPC-H of SF=100. The disk is of storageClass shared and of size 1000Gi and 210G of that space is used. It took about 7000s to build this database. Currently no DBMS is running. ```bash Dashboard: Running Message Queue: Running Data directory: Running Result directory: Running Cluster Prometheus: Running +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ | Volumes | configuration | experiment | loaded [s] | timeLoading [s] | dbms | storage_class_name | storage | status | size | used | +====================================+=================+==============+==============+===================+============+======================+===========+==========+========+========+ | bexhoma-storage-monetdb-tpch-100 | monetdb | tpch-100 | True | 7061 | MonetDB | shared | 300Gi | Bound | 300G | 210G | +------------------------------------+-----------------+--------------+--------------+-------------------+------------+----------------------+-----------+----------+--------+--------+ ``` ### Summary of Results At the end of a benchmark you will see a summary like doc_tpch_monetdb_1.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=100 * Type: tpch * Duration: 4044s * Code: 1782130030 * This includes the reading queries of TPC-H. * This experiment compares run time and resource consumption of TPC-H queries in different DBMS. * TPC-H (SF=100) data is loaded and benchmark is executed. * Query ordering is Q1 - Q22. * All instances use the same query parameters. * Timeout per query is 3600. * Import sets indexes and constraints after loading and recomputes statistics. * Experiment uses bexhoma version 0.9.18. * System metrics are monitored by a cluster-wide installation. * Experiment is limited to DBMS ['MonetDB']. * Import is handled by 8 processes (pods). * Loading is fixed to cl-worker19. * Benchmarking is fixed to cl-worker19. * Database is persisted to disk of type shared and size 1000Gi. * Loading is tested with [8] threads, split into [8] pods. * Benchmarking is tested with [1] threads, split into [1] pods. * Benchmarking is run as [1] times the number of benchmarking pods. * Experiment is run once. ### Connections * MonetDB-1-1-1-1-1 uses docker image monetdb/monetdb:Dec2025-SP1 * RAM:2164173246464 * CPU:INTEL(R) XEON(R) PLATINUM 8570 * Cores:224 * host:6.8.0-111-generic * node:cl-worker36 * disk:839170 * datadisk:165384 * volume_size:1000G * volume_used:162G * cpu_list:0-223 * requests_cpu:4 * requests_memory:256Gi * limits_memory:256Gi * eval_parameters * code:1782130030 ### Workflow #### Actual * DBMS MonetDB-1 - Experiment 1 Client 1: tpch (1 pods) #### Planned * DBMS MonetDB-1 - Experiment 1 Client 1: tpch (1 pods) ### Loading #### Per Run | | experiment_run | SF | time_load | time_preload | time_generate | time_ingest | time_postload | loading_pods | terminals | tenant_id | type_tenants | num_tenants | vol_tenants | Throughput [SF/h] | |:------------|-----------------:|-----:|------------:|---------------:|----------------:|--------------:|----------------:|---------------:|------------:|:------------|:---------------|--------------:|:--------------|--------------------:| | MonetDB-1-1 | 1 | 100 | 4896.00 | 3.00 | 17.00 | 1829.00 | 3043.00 | 8 | 0 | | None | 0 | False | 73.53 | ### Execution #### Per Connection | | configuration | phase | job | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | pod | |:------------------|:----------------|:--------------|:----------------|-----------------:|---------:|----------------:|------------:|-------:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:|:------------------| | MonetDB-1-1-1-1-1 | MonetDB-1 | MonetDB-1-1-1 | MonetDB-1-1-1-1 | 1 | 1 | 1 | 1 | 100.00 | 22 | 825 | 7.15 | 54330.50 | 9600.00 | -1 | MonetDB-1-1-1-1-1 | #### Per Phase | | phase | experiment_run | client | benchmark_run | pod_count | SF | num_of_queries | time [s] | Geo Times [s] | Power@Size [~Q/h] | Throughput@Size | tenant_id | |:--------------|:--------------|-----------------:|---------:|----------------:|------------:|-------:|-----------------:|-----------:|----------------:|--------------------:|------------------:|------------:| | MonetDB-1-1-1 | MonetDB-1-1-1 | 1 | 1 | 1 | 1 | 100.00 | 22 | 825 | 7.15 | 54330.50 | 9600.00 | -1 | ### Latency of Timer Execution [ms] | Queries | MonetDB-1-1-1-1-1 | |:----------------------------------------------------|--------------------:| | Pricing Summary Report (TPC-H Q1) | 57828.73 | | Minimum Cost Supplier Query (TPC-H Q2) | 1313.33 | | Shipping Priority (TPC-H Q3) | 11289.39 | | Order Priority Checking Query (TPC-H Q4) | 8987.81 | | Local Supplier Volume (TPC-H Q5) | 35612.09 | | Forecasting Revenue Change (TPC-H Q6) | 3348.48 | | Volume Shipping Query (TPC-H Q7) | 2463.64 | | National Market Share (TPC-H Q8) | 6423.63 | | Product Type Profit Measure (TPC-H Q9) | 8464.46 | | Returned Item Reporting Query (TPC-H Q10) | 17817.98 | | Important Stock Identification (TPC-H Q11) | 801.06 | | Shipping Modes and Order Priority (TPC-H Q12) | 2614.98 | | Customer Distribution (TPC-H Q13) | 29962.08 | | Promotion Effect Query (TPC-H Q14) | 3487.01 | | Top Supplier Query (TPC-H Q15) | 2220.99 | | Parts/Supplier Relationship (TPC-H Q16) | 3804.30 | | Small-Quantity-Order Revenue (TPC-H Q17) | 7209.72 | | Large Volume Customer (TPC-H Q18) | 5888.51 | | Discounted Revenue (TPC-H Q19) | 3426.37 | | Potential Part Promotion (TPC-H Q20) | 2010.60 | | Suppliers Who Kept Orders Waiting Query (TPC-H Q21) | 573411.51 | | Global Sales Opportunity Query (TPC-H Q22) | 1718.16 | ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Monitoring ### Loading phase: SUT deployment | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:----------------|-------------:|----------:|---------------:|----------------------:| | MonetDB-1-1-1-1 | 7813.44 | 8.58 | 157.75 | 157.76 | ### Loading phase: component data generator | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:----------------|-------------:|----------:|---------------:|----------------------:| | MonetDB-1-1-1-1 | 0.00 | 0.00 | 0.00 | 0.00 | ### Loading phase: component loader | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:----------------|-------------:|----------:|---------------:|----------------------:| | MonetDB-1-1-1-1 | 1461.66 | 1.02 | 0.03 | 13.29 | ### Execution phase: SUT deployment | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:----------------|-------------:|----------:|---------------:|----------------------:| | MonetDB-1-1-1-1 | 7996.45 | 53.06 | 220.77 | 220.78 | ### Execution phase: component benchmarker | DBMS | CPU [CPUs] | Max CPU | Max RAM [Gb] | Max RAM Cached [Gb] | |:----------------|-------------:|----------:|---------------:|----------------------:| | MonetDB-1-1-1-1 | 28.81 | 0.27 | 0.37 | 0.38 | ### Tests * TEST passed: Loading phase: SUT deployment contains no 0 or NaN in CPU [CPUs] * TEST skipped: Loading phase: component data generator contains 0 or NaN in CPU [CPUs] (data pre-existing) * TEST passed: Loading phase: component loader contains no 0 or NaN in CPU [CPUs] * TEST passed: Execution phase: SUT deployment contains no 0 or NaN in CPU [CPUs] * TEST passed: Execution phase: component benchmarker contains no 0 or NaN in CPU [CPUs] * TEST passed: Geo Times [s] contains no 0 or NaN * TEST passed: Power@Size [~Q/h] contains no 0 or NaN * TEST passed: Throughput@Size contains no 0 or NaN * TEST passed: No SQL errors * TEST passed: No SQL warnings * TEST passed: Workflow as planned ``` To see the summary again you can simply call `bexperiments summary -e 1708411664` with the experiment code. ### List local results You can inspect a preview list of results via `bexperiments localresults`. ```bash +------------+----------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------+---------+-------------+---------------------+ | index | name | info | intro | queries | connections | time | +------------+----------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------+---------+-------------+---------------------+ | 1708411664 | TPC-H Queries SF=100 | This experiment compares run time and resource consumption of TPC-H queries in different DBMS. | This includes the reading queries of TPC-H. | 22 | 28 | 2024-02-20 11:37:30 | | | | TPC-H data is loaded from a filesystem using several processes. | | | | | | | | Import is limited to DBMS MonetDB. | | | | | | | | Import is handled by 1 processes. | | | | | | | | Loading is fixed to cl-worker19. | | | | | | | | Benchmarking is fixed to cl-worker19. | | | | | +------------+----------------------+------------------------------------------------------------------------------------------------+---------------------------------------------------+---------+-------------+---------------------+ ``` ### Perform Benchmark - Power Test We now start a new instance of MonetDB and mount the existing database: we use the prepared database on the shared disk. We then run two power tests, one after the other (`-ne 1,1`), and shut down the DBMS. This is repeated 2 times (`-nc`). ```bash mkdir -p ./logs/ BEXHOMA_MS=1 BEXHOMA_STORAGE_CLASS="shared" BEXHOMA_NODE_SUT="cl-worker11" BEXHOMA_NODE_LOAD="cl-worker19" BEXHOMA_NODE_BENCHMARK="cl-worker19" bexhoma tpch \ -dbms MonetDB \ -sf 100 \ -nc 2 \ -ne 1,1 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -m \ -mc \ -ms $BEXHOMA_MS \ -t 3600 \ -lr 256Gi \ -rr 256Gi \ -rss 1000Gi \ -rst $BEXHOMA_STORAGE_CLASS \ -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_monetdb_2.log ``` ### Evaluate Results doc_tpch_monetdb_2.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=100 Type: tpch Duration: 5469s Code: 1766264884 This includes the reading queries of TPC-H. This experiment compares run time and resource consumption of TPC-H queries in different DBMS. TPC-H (SF=100) data is loaded and benchmark is executed. Query ordering is Q1 - Q22. All instances use the same query parameters. Timeout per query is 3600. Import sets indexes and constraints after loading and recomputes statistics. Experiment uses bexhoma version 0.8.19. System metrics are monitored by a cluster-wide installation. Experiment is limited to DBMS ['MonetDB']. Import is handled by 8 processes (pods). Loading is fixed to cl-worker19. Benchmarking is fixed to cl-worker19. SUT is fixed to cl-worker11. Database is persisted to disk of type shared and size 1000Gi. Loading is tested with [8] threads, split into [8] pods. Benchmarking is tested with [1] threads, split into [1] pods. Benchmarking is run as [1, 1] times the number of benchmarking pods. Experiment is run 2 times. ### Connections MonetDB-BHT-8-1-1-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:194G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766264884 MonetDB-BHT-8-1-2-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:200G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766264884 MonetDB-BHT-8-2-1-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766264884 MonetDB-BHT-8-2-2-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766264884 ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Latency of Timer Execution [ms] DBMS MonetDB-BHT-8-1-1-1 MonetDB-BHT-8-1-2-1 MonetDB-BHT-8-2-1-1 MonetDB-BHT-8-2-2-1 Pricing Summary Report (TPC-H Q1) 549549.41 260209.34 578653.77 264735.80 Minimum Cost Supplier Query (TPC-H Q2) 42306.77 10951.74 32501.27 2746.34 Shipping Priority (TPC-H Q3) 90708.15 12778.58 91178.45 16965.86 Order Priority Checking Query (TPC-H Q4) 283253.19 15478.34 283887.15 17613.10 Local Supplier Volume (TPC-H Q5) 18697.65 10415.83 14428.72 11579.56 Forecasting Revenue Change (TPC-H Q6) 7361.56 6095.61 8652.73 5382.30 Forecasting Revenue Change (TPC-H Q7) 16336.24 9143.63 15459.23 9450.72 National Market Share (TPC-H Q8) 94125.12 37114.12 102768.30 31268.26 Product Type Profit Measure (TPC-H Q9) 38201.54 19209.55 30080.80 14801.36 Forecasting Revenue Change (TPC-H Q10) 62375.89 28933.41 64577.43 23692.00 Important Stock Identification (TPC-H Q11) 6359.39 1533.86 6090.28 1313.25 Shipping Modes and Order Priority (TPC-H Q12) 5202.66 5448.33 4831.43 4747.70 Customer Distribution (TPC-H Q13) 283971.26 106841.51 300937.85 121793.67 Forecasting Revenue Change (TPC-H Q14) 7650.03 7489.91 6719.45 7015.28 Top Supplier Query (TPC-H Q15) 11460.24 8642.87 8348.77 6982.36 Parts/Supplier Relationship (TPC-H Q16) 13207.73 14273.21 13936.28 12632.37 Small-Quantity-Order Revenue (TPC-H Q17) 67556.67 15239.49 52364.87 15640.76 Large Volume Customer (TPC-H Q18) 39887.95 22682.11 43599.12 23056.39 Discounted Revenue (TPC-H Q19) 6938.53 7979.88 9728.93 8475.90 Potential Part Promotion (TPC-H Q20) 9865.10 8175.36 12462.07 6892.81 Suppliers Who Kept Orders Waiting Query (TPC-H Q21) 27200.51 21193.03 31069.92 23114.13 Global Sales Opportunity Query (TPC-H Q22) 6246.48 8008.67 7408.76 6112.32 ### Loading [s] timeGenerate timeIngesting timeSchema timeIndex timeLoad MonetDB-BHT-8-1-1-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-1-2-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-2-1-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-2-2-1 25.0 1596.0 12.0 8270.0 9906.0 ### Geometric Mean of Medians of Timer Run [s] Geo Times [s] DBMS MonetDB-BHT-8-1-1-1 29.12 MonetDB-BHT-8-1-2-1 14.88 MonetDB-BHT-8-2-1-1 28.92 MonetDB-BHT-8-2-2-1 13.42 ### Power@Size ((3600*SF)/(geo times)) Power@Size [~Q/h] DBMS MonetDB-BHT-8-1-1-1 12624.90 MonetDB-BHT-8-1-2-1 25409.73 MonetDB-BHT-8-2-1-1 12749.63 MonetDB-BHT-8-2-2-1 28319.38 ### Throughput@Size ((runs*queries*streams*3600*SF)/(span of time)) time [s] count SF Throughput@Size DBMS SF num_experiment num_client MonetDB-BHT-8-1-1 100.0 1 1 1716 1 100.0 4615.38 MonetDB-BHT-8-1-2 100.0 1 2 660 1 100.0 12000.00 MonetDB-BHT-8-2-1 100.0 2 1 1748 1 100.0 4530.89 MonetDB-BHT-8-2-2 100.0 2 2 655 1 100.0 12091.60 ### Workflow orig_name SF pods num_experiment num_client benchmark_start benchmark_end MonetDB-BHT-8-1-1-1 MonetDB-BHT-8-1-1 100.0 8 1 1 1766265026 1766266742 MonetDB-BHT-8-1-2-1 MonetDB-BHT-8-1-2 100.0 8 1 2 1766266833 1766267493 MonetDB-BHT-8-2-1-1 MonetDB-BHT-8-2-1 100.0 8 2 1 1766267753 1766269501 MonetDB-BHT-8-2-2-1 MonetDB-BHT-8-2-2 100.0 8 2 2 1766269612 1766270267 #### Actual DBMS MonetDB-BHT-8 - Pods [[1, 1], [1, 1]] #### Planned DBMS MonetDB-BHT-8 - Pods [[1, 1], [1, 1]] ### Execution - SUT CPU [CPUs] Max CPU Max RAM [Gb] Max RAM Cached [Gb] MonetDB-BHT-8-1-1 7045.82 22.22 63.81 107.45 MonetDB-BHT-8-1-2 4987.48 19.27 81.85 176.92 MonetDB-BHT-8-2-1 13350.19 19.77 88.76 115.40 MonetDB-BHT-8-2-2 4322.33 19.74 89.75 177.76 ### Execution - Benchmarker CPU [CPUs] Max CPU Max RAM [Gb] Max RAM Cached [Gb] MonetDB-BHT-8-1-1 28.75 0.11 0.38 0.39 MonetDB-BHT-8-1-2 28.75 0.16 0.41 0.42 MonetDB-BHT-8-2-1 31.11 0.17 0.41 0.42 MonetDB-BHT-8-2-2 28.62 0.13 0.39 0.40 ### Tests TEST passed: Geo Times [s] contains no 0 or NaN TEST passed: Power@Size [~Q/h] contains no 0 or NaN TEST passed: Throughput@Size contains no 0 or NaN TEST passed: No SQL errors TEST passed: No SQL warnings TEST passed: Workflow as planned TEST passed: Execution SUT contains no 0 or NaN in CPU [CPUs] TEST passed: Execution Benchmarker contains no 0 or NaN in CPU [CPUs] ``` ### Perform Benchmark - Throughput Test We now start a new instance of MonetDB and mount the existing database: we use the prepared database on the shared disk. We then run two power tests, one after the other, and then a throughput test with 3 parallel driver (`-ne 1,1,3`). and shut down the DBMS. ```bash mkdir -p ./logs/ BEXHOMA_MS=1 BEXHOMA_STORAGE_CLASS="shared" BEXHOMA_NODE_SUT="cl-worker11" BEXHOMA_NODE_LOAD="cl-worker19" BEXHOMA_NODE_BENCHMARK="cl-worker19" bexhoma tpch \ -dbms MonetDB \ -sf 100 \ -nc 1 \ -ne 1,1,3 \ -nlp 8 \ -nlt 8 \ -xii -xic -xis \ -xdt \ -m \ -mc \ -ms $BEXHOMA_MS \ -t 3600 \ -lr 256Gi \ -rr 256Gi \ -rss 1000Gi \ -rst $BEXHOMA_STORAGE_CLASS \ -rnl $BEXHOMA_NODE_LOAD -rnb $BEXHOMA_NODE_BENCHMARK \ run &>$LOG_DIR/doc_tpch_monetdb_3.log ``` ### Evaluate Results doc_tpch_monetdb_3.log ```markdown ## Show Summary ### Workload TPC-H Queries SF=100 Type: tpch Duration: 4181s Code: 1766270524 This includes the reading queries of TPC-H. This experiment compares run time and resource consumption of TPC-H queries in different DBMS. TPC-H (SF=100) data is loaded and benchmark is executed. Query ordering is Q1 - Q22. All instances use the same query parameters. Timeout per query is 3600. Import sets indexes and constraints after loading and recomputes statistics. Experiment uses bexhoma version 0.8.19. System metrics are monitored by a cluster-wide installation. Experiment is limited to DBMS ['MonetDB']. Import is handled by 8 processes (pods). Loading is fixed to cl-worker19. Benchmarking is fixed to cl-worker19. SUT is fixed to cl-worker11. Database is persisted to disk of type shared and size 1000Gi. Loading is tested with [8] threads, split into [8] pods. Benchmarking is tested with [1] threads, split into [1] pods. Benchmarking is run as [1, 1, 3] times the number of benchmarking pods. Experiment is run once. ### Connections MonetDB-BHT-8-1-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766270524 MonetDB-BHT-8-2-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435028 volume_size:1000G volume_used:199G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766270524 MonetDB-BHT-8-3-1 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435029 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766270524 MonetDB-BHT-8-3-2 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435029 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766270524 MonetDB-BHT-8-3-3 uses docker image monetdb/monetdb:Dec2025 RAM:541008486400 CPU:AMD Opteron(tm) Processor 6378 Cores:64 host:5.15.0-160-generic node:cl-worker11 disk:435029 volume_size:1000G volume_used:191G cpu_list:0-63 requests_cpu:4 requests_memory:256Gi limits_memory:256Gi eval_parameters code:1766270524 ### Errors (failed queries) No errors ### Warnings (result mismatch) No warnings ### Latency of Timer Execution [ms] DBMS MonetDB-BHT-8-1-1 MonetDB-BHT-8-2-1 MonetDB-BHT-8-3-1 MonetDB-BHT-8-3-2 MonetDB-BHT-8-3-3 Pricing Summary Report (TPC-H Q1) 591277.14 261524.30 566156.69 558857.84 539082.36 Minimum Cost Supplier Query (TPC-H Q2) 30266.80 11032.26 645.70 7922.03 27171.99 Shipping Priority (TPC-H Q3) 94682.84 20364.77 82631.38 85049.97 82597.44 Order Priority Checking Query (TPC-H Q4) 290058.43 18501.86 18678.75 17392.24 18201.60 Local Supplier Volume (TPC-H Q5) 16215.89 11163.20 15763.86 15301.89 13393.76 Forecasting Revenue Change (TPC-H Q6) 6765.17 5950.13 3745.67 3179.03 5657.54 Forecasting Revenue Change (TPC-H Q7) 16173.90 13112.58 14845.79 19581.00 15774.20 National Market Share (TPC-H Q8) 109311.90 37776.13 60552.65 55750.01 57616.94 Product Type Profit Measure (TPC-H Q9) 35028.63 17074.22 29464.51 27190.09 31788.97 Forecasting Revenue Change (TPC-H Q10) 62211.13 26603.27 29398.03 33336.95 32355.41 Important Stock Identification (TPC-H Q11) 6174.49 1306.02 3361.11 1599.41 760.49 Shipping Modes and Order Priority (TPC-H Q12) 6440.30 5157.87 8723.46 8708.53 8602.71 Customer Distribution (TPC-H Q13) 297212.72 123149.85 145616.55 139883.02 146678.82 Forecasting Revenue Change (TPC-H Q14) 7884.28 6540.19 5960.01 11357.77 4855.90 Top Supplier Query (TPC-H Q15) 13773.89 5910.43 8096.48 8205.58 8160.97 Parts/Supplier Relationship (TPC-H Q16) 14167.91 14666.84 16307.02 19377.82 15382.95 Small-Quantity-Order Revenue (TPC-H Q17) 57844.14 10762.18 123723.83 120778.78 124213.32 Large Volume Customer (TPC-H Q18) 43786.72 22160.84 34575.90 34430.06 35973.60 Discounted Revenue (TPC-H Q19) 7174.37 6782.56 10248.88 10210.40 8903.52 Potential Part Promotion (TPC-H Q20) 10125.61 6464.84 7849.34 8288.70 7808.59 Suppliers Who Kept Orders Waiting Query (TPC-H Q21) 30820.01 22863.39 52127.29 56491.84 50028.85 Global Sales Opportunity Query (TPC-H Q22) 6718.82 7549.45 6673.40 6388.51 7471.33 ### Loading [s] timeGenerate timeIngesting timeSchema timeIndex timeLoad MonetDB-BHT-8-1-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-2-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-3-1 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-3-2 25.0 1596.0 12.0 8270.0 9906.0 MonetDB-BHT-8-3-3 25.0 1596.0 12.0 8270.0 9906.0 ### Geometric Mean of Medians of Timer Run [s] Geo Times [s] DBMS MonetDB-BHT-8-1-1 29.58 MonetDB-BHT-8-2-1 14.67 MonetDB-BHT-8-3-1 19.36 MonetDB-BHT-8-3-2 22.12 MonetDB-BHT-8-3-3 22.42 ### Power@Size ((3600*SF)/(geo times)) Power@Size [~Q/h] DBMS MonetDB-BHT-8-1-1 12432.80 MonetDB-BHT-8-2-1 25917.35 MonetDB-BHT-8-3-1 19175.05 MonetDB-BHT-8-3-2 17035.51 MonetDB-BHT-8-3-3 17257.47 ### Throughput@Size ((runs*queries*streams*3600*SF)/(span of time)) time [s] count SF Throughput@Size DBMS SF num_experiment num_client MonetDB-BHT-8-1 100.0 1 1 1782 1 100.0 4444.44 MonetDB-BHT-8-2 100.0 1 2 677 1 100.0 11698.67 MonetDB-BHT-8-3 100.0 1 3 1271 3 100.0 18693.94 ### Workflow orig_name SF pods num_experiment num_client benchmark_start benchmark_end MonetDB-BHT-8-1-1 MonetDB-BHT-8-1 100.0 8 1 1 1766270665 1766272447 MonetDB-BHT-8-2-1 MonetDB-BHT-8-2 100.0 8 1 2 1766272569 1766273246 MonetDB-BHT-8-3-1 MonetDB-BHT-8-3 100.0 8 1 3 1766273346 1766274612 MonetDB-BHT-8-3-2 MonetDB-BHT-8-3 100.0 8 1 3 1766273346 1766274617 MonetDB-BHT-8-3-3 MonetDB-BHT-8-3 100.0 8 1 3 1766273346 1766274611 #### Actual DBMS MonetDB-BHT-8 - Pods [[1, 1, 3]] #### Planned DBMS MonetDB-BHT-8 - Pods [[1, 1, 3]] ### Execution - SUT CPU [CPUs] Max CPU Max RAM [Gb] Max RAM Cached [Gb] MonetDB-BHT-8-1 6900.04 22.54 67.20 113.19 MonetDB-BHT-8-2 4918.34 20.77 82.51 175.16 MonetDB-BHT-8-3 11922.36 33.66 127.29 256.00 ### Execution - Benchmarker CPU [CPUs] Max CPU Max RAM [Gb] Max RAM Cached [Gb] MonetDB-BHT-8-1 29.19 0.17 0.37 0.38 MonetDB-BHT-8-2 29.19 0.16 0.37 0.38 MonetDB-BHT-8-3 62.74 0.44 0.39 0.40 ### Tests TEST passed: Geo Times [s] contains no 0 or NaN TEST passed: Power@Size [~Q/h] contains no 0 or NaN TEST passed: Throughput@Size contains no 0 or NaN TEST passed: No SQL errors TEST passed: No SQL warnings TEST passed: Workflow as planned TEST passed: Execution SUT contains no 0 or NaN in CPU [CPUs] TEST passed: Execution Benchmarker contains no 0 or NaN in CPU [CPUs] ``` The loading times for both instances of loading are the same, since both relate to the same process of ingesting into the database. Note the added section about `volume_size` and `volume_used` in the connections section.