From 5d2cd95bb7bffa081b6220bdbecde20824770e84 Mon Sep 17 00:00:00 2001 From: KazukiKanda Date: Fri, 25 Sep 2026 21:48:33 +0900 Subject: [PATCH 1/2] Add duckdb-vortex-tuned: variant with threads=2 for memory-constrained hosts --- duckdb-vortex-tuned/benchmark.sh | 9 + duckdb-vortex-tuned/check | 4 + duckdb-vortex-tuned/create.sql | 6 + duckdb-vortex-tuned/data-size | 4 + duckdb-vortex-tuned/install | 19 ++ duckdb-vortex-tuned/load | 18 ++ duckdb-vortex-tuned/queries.sql | 43 ++++ duckdb-vortex-tuned/query | 20 ++ .../results/20260925/c6a.xlarge.json | 237 ++++++++++++++++++ duckdb-vortex-tuned/start | 9 + duckdb-vortex-tuned/stop | 2 + duckdb-vortex-tuned/template.json | 13 + 12 files changed, 384 insertions(+) create mode 100755 duckdb-vortex-tuned/benchmark.sh create mode 100755 duckdb-vortex-tuned/check create mode 100644 duckdb-vortex-tuned/create.sql create mode 100755 duckdb-vortex-tuned/data-size create mode 100755 duckdb-vortex-tuned/install create mode 100755 duckdb-vortex-tuned/load create mode 100644 duckdb-vortex-tuned/queries.sql create mode 100755 duckdb-vortex-tuned/query create mode 100644 duckdb-vortex-tuned/results/20260925/c6a.xlarge.json create mode 100755 duckdb-vortex-tuned/start create mode 100755 duckdb-vortex-tuned/stop create mode 100644 duckdb-vortex-tuned/template.json diff --git a/duckdb-vortex-tuned/benchmark.sh b/duckdb-vortex-tuned/benchmark.sh new file mode 100755 index 0000000000..fb3b4d1318 --- /dev/null +++ b/duckdb-vortex-tuned/benchmark.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export BENCH_DOWNLOAD_SCRIPT="download-hits-parquet-single" +export BENCH_RESTARTABLE=no +# Single-process engine: each query forks a fresh full-machine process with no +# shared scheduler across connections, so the concurrent-QPS test only +# oversubscribes RAM rather than measuring throughput. Skip it by default; +# override BENCH_CONCURRENT_DURATION to re-enable. See issue #946. +export BENCH_CONCURRENT_DURATION="${BENCH_CONCURRENT_DURATION:-0}" +exec ../lib/benchmark-common.sh diff --git a/duckdb-vortex-tuned/check b/duckdb-vortex-tuned/check new file mode 100755 index 0000000000..3c457f3f1e --- /dev/null +++ b/duckdb-vortex-tuned/check @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +duckdb -c "SELECT 1" >/dev/null diff --git a/duckdb-vortex-tuned/create.sql b/duckdb-vortex-tuned/create.sql new file mode 100644 index 0000000000..3d26179e0e --- /dev/null +++ b/duckdb-vortex-tuned/create.sql @@ -0,0 +1,6 @@ +LOAD vortex; + +CREATE VIEW hits AS + SELECT * REPLACE (make_date(EventDate) AS EventDate) + FROM read_vortex('hits.vortex'); +CREATE MACRO toDateTime(t) AS epoch_ms(t * 1000); diff --git a/duckdb-vortex-tuned/data-size b/duckdb-vortex-tuned/data-size new file mode 100755 index 0000000000..2dbaf40fad --- /dev/null +++ b/duckdb-vortex-tuned/data-size @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +du -bcs hits.vortex | awk 'END { print $1 }' diff --git a/duckdb-vortex-tuned/install b/duckdb-vortex-tuned/install new file mode 100755 index 0000000000..193fe2e6f8 --- /dev/null +++ b/duckdb-vortex-tuned/install @@ -0,0 +1,19 @@ +#!/bin/bash +set -e + +# duckdb writes its extension cache under $HOME/.duckdb/extensions. With +# HOME unset (cloud-init occasionally runs scripts that way) the +# `INSTALL vortex` below ends up writing to /.duckdb and later sibling +# scripts (load/query) can't find the extension. The previous +# `export HOME=${HOME:=~}` was inside the install-duckdb branch, so +# re-runs with duckdb already on PATH still hit the bug. Pin HOME +# unconditionally at the top. +export HOME="${HOME:-/root}" + +if ! command -v duckdb >/dev/null 2>&1; then + curl https://install.duckdb.org | sh + sudo ln -sf "$HOME/.duckdb/cli/latest/duckdb" /usr/local/bin/duckdb +fi + +# Install the vortex extension (idempotent — safe to re-run). +duckdb -c "INSTALL vortex;" diff --git a/duckdb-vortex-tuned/load b/duckdb-vortex-tuned/load new file mode 100755 index 0000000000..d9ef669ba3 --- /dev/null +++ b/duckdb-vortex-tuned/load @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +# Convert source parquet to Vortex format. `duckdb-vortex` (default +# settings) OOM-kills on hosts with ~7.6 GiB usable RAM: even lowering +# `memory_limit` does not prevent it (see +# https://github.com/vortex-data/vortex/issues/10046 for the full +# investigation and raw evidence). `threads=2` is the largest thread +# count that completed in our testing; default (`threads=4`) OOMs. +duckdb -c "LOAD vortex; SET threads = 2; COPY 'hits.parquet' TO 'hits.vortex' (FORMAT vortex);" + +# Create the persistent VIEW (over hits.vortex) in hits.db. +rm -f hits.db +duckdb hits.db -f create.sql + +# Source parquet no longer needed. +rm -f hits.parquet +sync diff --git a/duckdb-vortex-tuned/queries.sql b/duckdb-vortex-tuned/queries.sql new file mode 100644 index 0000000000..ceebb80d76 --- /dev/null +++ b/duckdb-vortex-tuned/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM hits; +SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; +SELECT AVG(UserID) FROM hits; +SELECT COUNT(DISTINCT UserID) FROM hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM hits; +SELECT MIN(EventDate), MAX(EventDate) FROM hits; +SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM toDateTime(EventTime)) AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(STRLEN(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(STRLEN(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', toDateTime(EventTime)) AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', toDateTime(EventTime)) ORDER BY DATE_TRUNC('minute', toDateTime(EventTime)) LIMIT 10 OFFSET 1000; diff --git a/duckdb-vortex-tuned/query b/duckdb-vortex-tuned/query new file mode 100755 index 0000000000..5eef5331ae --- /dev/null +++ b/duckdb-vortex-tuned/query @@ -0,0 +1,20 @@ +#!/bin/bash +# Reads a SQL query from stdin, runs it via duckdb against hits.db (a VIEW +# over hits.vortex). The vortex extension is loaded for each invocation. +# Stdout: query result. Stderr: runtime in fractional seconds on the last +# line. Exit non-zero on error. +set -e + +query=$(cat) + +out=$(duckdb hits.db -c "LOAD vortex;" -c ".timer on" -c "$query" 2>/tmp/duckdb.err.$$) && status=0 || status=$? + +if [ "$status" -ne 0 ]; then + cat /tmp/duckdb.err.$$ >&2 + rm -f /tmp/duckdb.err.$$ + exit "$status" +fi +rm -f /tmp/duckdb.err.$$ + +printf '%s\n' "$out" | grep -v '^Run Time ' +printf '%s\n' "$out" | awk '/^Run Time/ { print $5 }' | tail -n1 >&2 diff --git a/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json b/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json new file mode 100644 index 0000000000..1e3877cafb --- /dev/null +++ b/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json @@ -0,0 +1,237 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-25", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": [ + "Rust", + "column-oriented", + "DuckDB derivative", + "embedded", + "stateless" + ], + "load_time": 1540, + "data_size": 12262081588, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [ + 0.047, + 0.016, + 0.017 + ], + [ + 0.112, + 0.067, + 0.068 + ], + [ + 0.379, + 0.13, + 0.129 + ], + [ + 1.135, + 0.274, + 0.265 + ], + [ + 1.813, + 0.992, + 0.986 + ], + [ + 1.779, + 1.098, + 1.113 + ], + [ + 0.136, + 0.094, + 0.095 + ], + [ + 0.133, + 0.068, + 0.069 + ], + [ + 2.356, + 1.377, + 1.381 + ], + [ + 2.736, + 1.731, + 1.729 + ], + [ + 1.321, + 0.428, + 0.415 + ], + [ + 1.278, + 0.47, + 0.513 + ], + [ + 1.743, + 1.158, + 1.165 + ], + [ + 3.537, + 2.057, + 2.061 + ], + [ + 2.148, + 1.333, + 1.335 + ], + [ + 2.006, + 1.188, + 1.207 + ], + [ + 3.917, + 2.755, + 2.728 + ], + [ + 3.319, + 2.117, + 2.128 + ], + [ + 7.603, + 6.129, + 5.972 + ], + [ + 0.758, + 0.156, + 0.154 + ], + [ + 10.433, + 1.741, + 1.791 + ], + [ + 20.851, + 23.108, + 31.025 + ], + [ + 39.574, + 33.444, + 36.386 + ], + [ + 1.707, + 0.397, + 0.38 + ], + [ + 0.277, + 0.08, + 0.083 + ], + [ + 1.201, + 0.574, + 0.59 + ], + [ + 0.401, + 0.14, + 0.129 + ], + [ + 11.756, + 1.808, + 1.805 + ], + [ + 29.533, + 26.738, + 27.26 + ], + [ + 0.293, + 0.113, + 0.113 + ], + [ + 2.349, + 0.964, + 0.955 + ], + [ + 5.609, + 1.233, + 1.254 + ], + [ + 8.328, + 7.668, + 7.27 + ], + [ + 290.564, + 311.924, + 186.843 + ], + [ + 342.431, + 336.431, + 344.215 + ], + [ + 1.91, + 1.429, + 1.442 + ], + [ + 0.395, + 0.261, + 0.243 + ], + [ + 0.194, + 0.126, + 0.126 + ], + [ + 0.365, + 0.209, + 0.203 + ], + [ + 0.698, + 0.463, + 0.482 + ], + [ + 0.178, + 0.072, + 0.072 + ], + [ + 0.175, + 0.074, + 0.07 + ], + [ + 0.159, + 0.076, + 0.065 + ] + ] +} diff --git a/duckdb-vortex-tuned/start b/duckdb-vortex-tuned/start new file mode 100755 index 0000000000..e7a4fb1f74 --- /dev/null +++ b/duckdb-vortex-tuned/start @@ -0,0 +1,9 @@ +#!/bin/bash +# duckdb is embedded — no daemon to start. We do clean any stale WAL +# files that may have been captured in the snapshot: a .wal whose footer +# wasn't fully flushed pre-snapshot can leave duckdb refusing to open +# the database ("IO Error: ... Bad message"). The .wal is regenerated +# on the next write, so dropping it is safe between query sessions. +shopt -s nullglob +rm -f ./*.wal ./*.db.wal +exit 0 diff --git a/duckdb-vortex-tuned/stop b/duckdb-vortex-tuned/stop new file mode 100755 index 0000000000..06bd986563 --- /dev/null +++ b/duckdb-vortex-tuned/stop @@ -0,0 +1,2 @@ +#!/bin/bash +exit 0 diff --git a/duckdb-vortex-tuned/template.json b/duckdb-vortex-tuned/template.json new file mode 100644 index 0000000000..cf849b6eb1 --- /dev/null +++ b/duckdb-vortex-tuned/template.json @@ -0,0 +1,13 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": [ + "Rust", + "column-oriented", + "DuckDB derivative", + "embedded", + "stateless" + ] +} From 168ab33bcf90441a80d31d5b201905ada77445dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 26 Sep 2026 00:57:08 +0000 Subject: [PATCH 2/2] Add benchmark results for duckdb-vortex-tuned (c6a.2xlarge, c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl) --- .../results/20260925/c6a.xlarge.json | 237 ------------------ .../results/20260926/c6a.2xlarge.json | 60 +++++ .../results/20260926/c6a.4xlarge.json | 60 +++++ .../results/20260926/c6a.metal.json | 60 +++++ .../results/20260926/c7a.metal-48xl.json | 60 +++++ .../results/20260926/c8g.4xlarge.json | 60 +++++ .../results/20260926/c8g.metal-48xl.json | 60 +++++ 7 files changed, 360 insertions(+), 237 deletions(-) delete mode 100644 duckdb-vortex-tuned/results/20260925/c6a.xlarge.json create mode 100644 duckdb-vortex-tuned/results/20260926/c6a.2xlarge.json create mode 100644 duckdb-vortex-tuned/results/20260926/c6a.4xlarge.json create mode 100644 duckdb-vortex-tuned/results/20260926/c6a.metal.json create mode 100644 duckdb-vortex-tuned/results/20260926/c7a.metal-48xl.json create mode 100644 duckdb-vortex-tuned/results/20260926/c8g.4xlarge.json create mode 100644 duckdb-vortex-tuned/results/20260926/c8g.metal-48xl.json diff --git a/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json b/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json deleted file mode 100644 index 1e3877cafb..0000000000 --- a/duckdb-vortex-tuned/results/20260925/c6a.xlarge.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "system": "DuckDB (Vortex, single, load threads=2)", - "date": "2026-09-25", - "machine": "c6a.xlarge", - "cluster_size": 1, - "proprietary": "no", - "hardware": "cpu", - "tuned": "yes", - "tags": [ - "Rust", - "column-oriented", - "DuckDB derivative", - "embedded", - "stateless" - ], - "load_time": 1540, - "data_size": 12262081588, - "concurrent_qps": null, - "concurrent_error_ratio": null, - "result": [ - [ - 0.047, - 0.016, - 0.017 - ], - [ - 0.112, - 0.067, - 0.068 - ], - [ - 0.379, - 0.13, - 0.129 - ], - [ - 1.135, - 0.274, - 0.265 - ], - [ - 1.813, - 0.992, - 0.986 - ], - [ - 1.779, - 1.098, - 1.113 - ], - [ - 0.136, - 0.094, - 0.095 - ], - [ - 0.133, - 0.068, - 0.069 - ], - [ - 2.356, - 1.377, - 1.381 - ], - [ - 2.736, - 1.731, - 1.729 - ], - [ - 1.321, - 0.428, - 0.415 - ], - [ - 1.278, - 0.47, - 0.513 - ], - [ - 1.743, - 1.158, - 1.165 - ], - [ - 3.537, - 2.057, - 2.061 - ], - [ - 2.148, - 1.333, - 1.335 - ], - [ - 2.006, - 1.188, - 1.207 - ], - [ - 3.917, - 2.755, - 2.728 - ], - [ - 3.319, - 2.117, - 2.128 - ], - [ - 7.603, - 6.129, - 5.972 - ], - [ - 0.758, - 0.156, - 0.154 - ], - [ - 10.433, - 1.741, - 1.791 - ], - [ - 20.851, - 23.108, - 31.025 - ], - [ - 39.574, - 33.444, - 36.386 - ], - [ - 1.707, - 0.397, - 0.38 - ], - [ - 0.277, - 0.08, - 0.083 - ], - [ - 1.201, - 0.574, - 0.59 - ], - [ - 0.401, - 0.14, - 0.129 - ], - [ - 11.756, - 1.808, - 1.805 - ], - [ - 29.533, - 26.738, - 27.26 - ], - [ - 0.293, - 0.113, - 0.113 - ], - [ - 2.349, - 0.964, - 0.955 - ], - [ - 5.609, - 1.233, - 1.254 - ], - [ - 8.328, - 7.668, - 7.27 - ], - [ - 290.564, - 311.924, - 186.843 - ], - [ - 342.431, - 336.431, - 344.215 - ], - [ - 1.91, - 1.429, - 1.442 - ], - [ - 0.395, - 0.261, - 0.243 - ], - [ - 0.194, - 0.126, - 0.126 - ], - [ - 0.365, - 0.209, - 0.203 - ], - [ - 0.698, - 0.463, - 0.482 - ], - [ - 0.178, - 0.072, - 0.072 - ], - [ - 0.175, - 0.074, - 0.07 - ], - [ - 0.159, - 0.076, - 0.065 - ] - ] -} diff --git a/duckdb-vortex-tuned/results/20260926/c6a.2xlarge.json b/duckdb-vortex-tuned/results/20260926/c6a.2xlarge.json new file mode 100644 index 0000000000..05e40bf999 --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 1105, + "data_size": 12262081588, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.039, 0.016, 0.016], + [0.076, 0.044, 0.044], + [0.255, 0.082, 0.083], + [0.55, 0.164, 0.164], + [0.897, 0.575, 0.579], + [0.916, 0.653, 0.652], + [0.09, 0.058, 0.058], + [0.101, 0.047, 0.048], + [1.214, 0.765, 0.758], + [1.424, 0.943, 0.95], + [0.667, 0.257, 0.252], + [0.703, 0.285, 0.29], + [0.982, 0.701, 0.699], + [2.647, 1.248, 1.263], + [1.151, 0.823, 0.817], + [1.014, 0.665, 0.664], + [2.578, 1.56, 1.563], + [2.264, 1.242, 1.241], + [4.274, 2.805, 2.822], + [0.356, 0.097, 0.097], + [10.252, 1.049, 1.038], + [13.288, 2.055, 2.016], + [16.853, 3.176, 3.145], + [1.722, 0.257, 0.263], + [0.324, 0.075, 0.069], + [0.767, 0.346, 0.353], + [0.244, 0.098, 0.103], + [11.558, 1.164, 1.199], + [11.278, 10.008, 9.981], + [0.254, 0.079, 0.079], + [2.213, 0.581, 0.587], + [5.296, 0.774, 0.778], + [5.447, 3.119, 3.191], + [12.271, 7.895, 7.561], + [12.34, 10.156, 9.95], + [1.222, 0.797, 0.799], + [0.313, 0.21, 0.212], + [0.176, 0.121, 0.121], + [0.28, 0.189, 0.189], + [0.527, 0.419, 0.406], + [0.142, 0.07, 0.063], + [0.146, 0.06, 0.06], + [0.126, 0.065, 0.06] +] + } + \ No newline at end of file diff --git a/duckdb-vortex-tuned/results/20260926/c6a.4xlarge.json b/duckdb-vortex-tuned/results/20260926/c6a.4xlarge.json new file mode 100644 index 0000000000..49822df1cf --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 762, + "data_size": 12262081588, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.039, 0.016, 0.016], + [0.068, 0.032, 0.031], + [0.269, 0.058, 0.058], + [0.493, 0.107, 0.109], + [0.887, 0.387, 0.385], + [0.832, 0.424, 0.464], + [0.076, 0.04, 0.039], + [0.094, 0.036, 0.036], + [0.985, 0.51, 0.497], + [1.266, 0.618, 0.607], + [0.533, 0.167, 0.17], + [0.695, 0.193, 0.185], + [0.893, 0.502, 0.502], + [2.506, 0.937, 0.936], + [0.98, 0.584, 0.576], + [0.708, 0.453, 0.448], + [2.413, 1.086, 1.09], + [2.186, 0.837, 0.855], + [3.953, 1.912, 1.885], + [0.58, 0.072, 0.069], + [10.063, 0.771, 0.771], + [13.17, 1.339, 1.304], + [16.65, 2.156, 2.114], + [1.747, 0.208, 0.214], + [0.231, 0.068, 0.062], + [0.725, 0.215, 0.213], + [0.224, 0.081, 0.088], + [11.492, 0.836, 0.883], + [10.075, 5.409, 5.384], + [0.27, 0.062, 0.061], + [2.131, 0.397, 0.399], + [5.216, 0.562, 0.571], + [4.695, 2.074, 2.107], + [11.988, 2.53, 2.515], + [12.057, 2.769, 2.759], + [0.878, 0.493, 0.495], + [0.29, 0.176, 0.202], + [0.169, 0.119, 0.118], + [0.277, 0.161, 0.189], + [0.526, 0.352, 0.35], + [0.141, 0.073, 0.064], + [0.116, 0.055, 0.056], + [0.111, 0.06, 0.046] +] + } + \ No newline at end of file diff --git a/duckdb-vortex-tuned/results/20260926/c6a.metal.json b/duckdb-vortex-tuned/results/20260926/c6a.metal.json new file mode 100644 index 0000000000..e9386d871b --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 829, + "data_size": 12262081588, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.034, 0.017, 0.017], + [0.069, 0.049, 0.047], + [0.137, 0.058, 0.072], + [0.365, 0.163, 0.161], + [0.538, 0.413, 0.4], + [0.52, 0.436, 0.469], + [0.073, 0.04, 0.043], + [0.088, 0.041, 0.041], + [0.754, 0.344, 0.322], + [1.014, 0.316, 0.413], + [0.514, 0.328, 0.363], + [0.466, 0.316, 0.331], + [0.588, 0.428, 0.509], + [1.878, 0.593, 0.607], + [0.679, 0.373, 0.531], + [0.457, 0.374, 0.433], + [1.845, 0.714, 0.695], + [1.856, 0.65, 0.757], + [2.972, 1.065, 1.016], + [0.268, 0.131, 0.152], + [9.094, 1.229, 1.253], + [13.123, 1.292, 2.322], + [16.76, 2.454, 2.707], + [2.302, 0.631, 0.614], + [0.425, 0.176, 0.149], + [0.486, 0.337, 0.325], + [0.238, 0.174, 0.164], + [11.086, 2.455, 2.134], + [9.237, 2.878, 2.43], + [0.199, 0.108, 0.109], + [1.79, 0.393, 0.313], + [4.833, 0.482, 0.72], + [3.683, 0.898, 0.792], + [11.289, 2.886, 2.79], + [11.337, 2.836, 3.002], + [0.293, 0.246, 0.217], + [0.674, 0.662, 0.677], + [0.444, 0.413, 0.454], + [0.658, 0.655, 0.685], + [1.203, 1.227, 1.258], + [0.242, 0.164, 0.175], + [0.193, 0.137, 0.135], + [0.117, 0.093, 0.071] +] + } + \ No newline at end of file diff --git a/duckdb-vortex-tuned/results/20260926/c7a.metal-48xl.json b/duckdb-vortex-tuned/results/20260926/c7a.metal-48xl.json new file mode 100644 index 0000000000..ffcea4d227 --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 737, + "data_size": 12262081588, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.031, 0.016, 0.018], + [0.067, 0.044, 0.046], + [0.116, 0.053, 0.055], + [0.391, 0.156, 0.161], + [0.62, 0.314, 0.323], + [0.528, 0.421, 0.419], + [0.064, 0.039, 0.042], + [0.08, 0.043, 0.042], + [0.738, 0.279, 0.289], + [0.997, 0.298, 0.292], + [0.426, 0.25, 0.259], + [0.483, 0.247, 0.238], + [0.521, 0.284, 0.361], + [1.861, 0.406, 0.451], + [0.682, 0.368, 0.37], + [0.411, 0.347, 0.3], + [1.864, 0.618, 0.598], + [1.868, 0.639, 0.617], + [2.957, 0.871, 0.545], + [0.17, 0.123, 0.144], + [8.932, 1.121, 1.28], + [13.259, 2.386, 1.341], + [16.847, 2.639, 2.331], + [1.986, 0.634, 0.628], + [0.186, 0.141, 0.137], + [0.485, 0.308, 0.251], + [0.19, 0.151, 0.157], + [11.095, 2.044, 1.003], + [9.12, 2.75, 2.786], + [0.173, 0.103, 0.108], + [1.825, 0.326, 0.374], + [4.795, 0.672, 0.565], + [3.749, 0.657, 0.781], + [11.077, 2.403, 1.363], + [11.404, 1.723, 1.411], + [0.234, 0.199, 0.197], + [0.656, 0.678, 0.65], + [0.426, 0.41, 0.388], + [0.686, 0.614, 0.652], + [1.336, 1.291, 1.29], + [0.211, 0.161, 0.167], + [0.175, 0.13, 0.132], + [0.119, 0.07, 0.075] +] + } + \ No newline at end of file diff --git a/duckdb-vortex-tuned/results/20260926/c8g.4xlarge.json b/duckdb-vortex-tuned/results/20260926/c8g.4xlarge.json new file mode 100644 index 0000000000..e6a4157fd9 --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 746, + "data_size": 12262080116, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.031, 0.013, 0.012], + [0.056, 0.022, 0.022], + [0.289, 0.043, 0.044], + [0.51, 0.076, 0.075], + [0.914, 0.211, 0.213], + [0.854, 0.237, 0.253], + [0.062, 0.029, 0.028], + [0.077, 0.025, 0.025], + [0.903, 0.28, 0.283], + [1.157, 0.37, 0.363], + [0.522, 0.118, 0.118], + [0.888, 0.143, 0.133], + [1.048, 0.257, 0.263], + [2.269, 0.469, 0.472], + [0.909, 0.305, 0.306], + [0.556, 0.249, 0.246], + [2.224, 0.559, 0.567], + [2.149, 0.489, 0.496], + [3.483, 0.931, 0.936], + [0.294, 0.053, 0.051], + [10.534, 0.513, 0.522], + [13.188, 0.801, 0.801], + [16.647, 1.39, 1.337], + [1.724, 0.15, 0.146], + [0.208, 0.045, 0.042], + [1.041, 0.14, 0.137], + [0.215, 0.065, 0.062], + [11.623, 0.634, 0.629], + [9.788, 3.125, 3.056], + [0.28, 0.045, 0.043], + [2.069, 0.231, 0.233], + [5.082, 0.304, 0.303], + [3.939, 0.916, 0.906], + [12.227, 1.213, 1.199], + [11.673, 1.331, 1.337], + [0.822, 0.259, 0.255], + [0.274, 0.154, 0.14], + [0.138, 0.095, 0.099], + [0.223, 0.142, 0.15], + [0.461, 0.315, 0.319], + [0.13, 0.055, 0.053], + [0.105, 0.046, 0.047], + [0.1, 0.049, 0.039] +] + } + \ No newline at end of file diff --git a/duckdb-vortex-tuned/results/20260926/c8g.metal-48xl.json b/duckdb-vortex-tuned/results/20260926/c8g.metal-48xl.json new file mode 100644 index 0000000000..dfd714906a --- /dev/null +++ b/duckdb-vortex-tuned/results/20260926/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "DuckDB (Vortex, single, load threads=2)", + "date": "2026-09-26", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "yes", + "tags": ["Rust","column-oriented","DuckDB derivative","embedded","stateless"], + "load_time": 733, + "data_size": 12262080116, + "concurrent_qps": null, + "concurrent_error_ratio": null, + "result": [ + [0.026, 0.012, 0.012], + [0.052, 0.034, 0.033], + [0.113, 0.044, 0.045], + [0.358, 0.122, 0.125], + [0.597, 0.263, 0.228], + [0.527, 0.31, 0.275], + [0.052, 0.027, 0.026], + [0.067, 0.032, 0.028], + [0.698, 0.217, 0.232], + [0.966, 0.278, 0.268], + [0.381, 0.191, 0.191], + [0.516, 0.215, 0.201], + [0.555, 0.316, 0.324], + [1.823, 0.449, 0.399], + [0.608, 0.255, 0.277], + [0.407, 0.252, 0.251], + [1.812, 0.555, 0.502], + [1.824, 0.45, 0.585], + [2.883, 0.629, 0.727], + [0.278, 0.131, 0.111], + [8.914, 1.154, 0.881], + [12.79, 1.728, 1.95], + [16.505, 2.459, 1.99], + [2.134, 0.396, 0.423], + [0.168, 0.109, 0.096], + [0.658, 0.227, 0.199], + [0.228, 0.117, 0.107], + [10.81, 1.499, 1.585], + [8.95, 2.145, 2.103], + [0.198, 0.075, 0.077], + [1.766, 0.238, 0.264], + [4.773, 0.538, 0.485], + [3.656, 0.628, 0.582], + [10.91, 0.979, 0.996], + [10.968, 1.904, 2.148], + [0.236, 0.153, 0.164], + [0.476, 0.415, 0.408], + [0.297, 0.25, 0.263], + [0.452, 0.411, 0.417], + [0.892, 0.762, 0.782], + [0.169, 0.108, 0.112], + [0.13, 0.089, 0.092], + [0.096, 0.057, 0.055] +] + } + \ No newline at end of file