From 666f4004b80687aa4c7ee442ca21c57b6c145614 Mon Sep 17 00:00:00 2001 From: Panagiotis Moustafellos Date: Sat, 3 Oct 2026 22:20:28 +0300 Subject: [PATCH 1/3] Pin the entry to Ravel v0.21.0 v0.21.0 is published. Its log format stores the dataset in 9.8 GB instead of 11.2 GB, and the derived per-query SQL pool is now the tenant's whole SQL share, 16.5 GB on c6a.4xlarge instead of 8.2 GB, so q33 completes in the stock configuration. The README's figures for the dataset size, the resolved pools and q33 are updated, and the earlier figures are labelled with their versions. Signed-off-by: Panagiotis Moustafellos --- ravel/README.md | 43 +++++++++++++++++++++++++------------------ ravel/install | 2 +- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/ravel/README.md b/ravel/README.md index 6fa89f6a5c..f8a8b7d183 100644 --- a/ravel/README.md +++ b/ravel/README.md @@ -68,10 +68,11 @@ container, less a fixed reserve), with a fixed segment cap and engine deadline. Every resolved value and its source is logged on a `performance default resolved` line in `server.log`; a published result should record those lines, because they are the configuration the numbers were measured at. On -c6a.4xlarge the read cache resolves to 7.7 GB and the per-query SQL pool to -8.2 GB. `./start` also raises the process's open-file soft limit to the hard -limit, since the server has exited with `EMFILE` at startup under the common -default of 1024. +c6a.4xlarge, with the store on loopback, the fetch cache resolves to 12.3 GB and +the per-query SQL pool to 16.5 GB. That is the tenant's whole SQL share since +0.21.0; it was 8.2 GB before. `./start` also raises the process's open-file +soft limit to the hard limit, since the server has exited with `EMFILE` at +startup under the common default of 1024. `./load` declares the typed attribute columns and then loads the Parquet file. Object size is set at ingest by `--batch-rows`: one batch becomes one object per @@ -90,18 +91,21 @@ The reference machine's disk is a 500 GB gp2 volume. Ravel holds no data on local disk, so a cold run (server restarted, page cache dropped) fetches what it needs from RustFS, and RustFS reads it from that volume. The stock fetch policy reads whole objects, so a statement that touches the table reads the whole -11.2 GB dataset from the volume, whatever the statement computes. Measured on -v0.16.1, 40 of the 42 statements that return a number take 42.6 to 46.6 s -cold, consistent with reading the dataset at about 250 MB/s each time; the -other two (q1 and q7) take about 0.5 s. A 0.19.0 build measured 42.6 to 43.3 s -for the same 40. +dataset from the volume, whatever the statement computes. The dataset is +9.8 GB since 0.21.0, whose log format stores the same rows smaller; it was +11.2 GB before. Measured on v0.16.1, 40 of the 42 statements that return a +number take 42.6 to 46.6 s cold, consistent with reading the dataset at about +250 MB/s each time; the other two (q1 and q7) take about 0.5 s. A 0.19.0 build +measured 42.6 to 43.3 s for the same 40. On v0.21.0, in the same fresh-VM +setup, the cold sum over those 42 statements was 1,252.7 s, against 1,712.1 s +for 0.19.0. Ravel holds no data on local disk, so a warm run is served from the read cache or from RustFS. Since 0.19.0, a server whose store is on loopback derives its fetch cache at 40% of its memory budget instead of 25%: 12.3 GB on this -machine, above the 11.2 GB dataset, so the warm runs are served from the -cache. Before 0.19.0 the derived cache was 7.7 GB, and warm runs re-read the -dataset from RustFS through the page cache. +machine, above the dataset, so the warm runs are served from the cache. +Before 0.19.0 the derived cache was 7.7 GB, and warm runs re-read the dataset +from RustFS through the page cache. ### The tuned configuration @@ -119,11 +123,13 @@ requests to save wall time, and resolves the byte quantities exactly as `byte-minimal` does, so a logs read takes ranged reads wherever they save bytes. It only pays off once fetch concurrency is raised with it, which is what the second flag does (it sets the object-store GET permits, the SQL partition -count and the PromQL fan-out together). The third flag lifts the per-query -memory pool from the derived 8.2 GB to 12 GiB, which is what lets the widest -`GROUP BY` in the set (q33) complete instead of being refused. The trade is -more object-store requests for less cold wall-clock. It has not been measured -against RustFS; the real-S3 figures below are the reference for it. +count and the PromQL fan-out together). The third flag lifted the per-query +memory pool from the 8.2 GB that versions before 0.21.0 derived to 12 GiB, +which let the widest `GROUP BY` in the set (q33) complete instead of being +refused. Since 0.21.0 the derived pool is 16.5 GB on this machine, and q33 +completes without it. The trade is more object-store requests for less cold +wall-clock. It has not been measured against RustFS; the real-S3 figures below +are the reference for it. ### Reference: the same binaries on real S3 @@ -150,4 +156,5 @@ of the first and third run over the statements that returned a number. endpoint's window defaults to the last hour. - The heaviest whole-table aggregates can exceed the derived per-query memory pool on a small instance and are reported as errors rather than being run - with a raised limit; in the stock result that is q33. + with a raised limit. q33 reserves about 10.9 GB. Since 0.21.0 it completes on + c6a.4xlarge; on instances with less memory it can still be refused. diff --git a/ravel/install b/ravel/install index 4ff62ee876..1003147d2e 100755 --- a/ravel/install +++ b/ravel/install @@ -42,7 +42,7 @@ if ! command -v aws >/dev/null 2>&1; then fi aws --version -RAVEL_VERSION="${RAVEL_VERSION:-v0.19.0}" +RAVEL_VERSION="${RAVEL_VERSION:-v0.21.0}" RAVEL_REPO="${RAVEL_REPO:-https://github.com/NOFireAI/ravel}" case "$(uname -m)" in From c1b6a8ea61afec5e8f574006a45616f970391037 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 4 Oct 2026 04:30:21 +0000 Subject: [PATCH 2/3] Add benchmark results for ravel (c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl) --- ravel/results/20261004/c6a.4xlarge.json | 60 ++++++++++++++++++++++ ravel/results/20261004/c6a.metal.json | 60 ++++++++++++++++++++++ ravel/results/20261004/c7a.metal-48xl.json | 60 ++++++++++++++++++++++ ravel/results/20261004/c8g.4xlarge.json | 60 ++++++++++++++++++++++ ravel/results/20261004/c8g.metal-48xl.json | 60 ++++++++++++++++++++++ 5 files changed, 300 insertions(+) create mode 100644 ravel/results/20261004/c6a.4xlarge.json create mode 100644 ravel/results/20261004/c6a.metal.json create mode 100644 ravel/results/20261004/c7a.metal-48xl.json create mode 100644 ravel/results/20261004/c8g.4xlarge.json create mode 100644 ravel/results/20261004/c8g.metal-48xl.json diff --git a/ravel/results/20261004/c6a.4xlarge.json b/ravel/results/20261004/c6a.4xlarge.json new file mode 100644 index 0000000000..b6156d3ff9 --- /dev/null +++ b/ravel/results/20261004/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 1224, + "data_size": 9844635063, + "concurrent_qps": 0.623, + "concurrent_error_ratio": 0.103, + "result": [ + [0.518, 0.442, 0.447], + [37.37, 0.971, 0.956], + [37.314, 1.02, 1.022], + [37.252, 1.068, 1.049], + [37.379, 1.706, 1.706], + [37.425, 1.928, 1.937], + [0.527, 0.459, 0.457], + [37.405, 0.973, 0.934], + [37.434, 2.104, 2.052], + [37.62, 2.316, 2.269], + [37.426, 1.455, 1.449], + [37.453, 1.592, 1.59], + [37.453, 1.775, 1.788], + [37.809, 2.312, 2.203], + [37.454, 1.754, 1.803], + [37.412, 1.788, 1.738], + [37.514, 3.039, 3.007], + [37.441, 2.893, 2.921], + [37.632, 3.48, 3.357], + [33.166, 0.938, 0.931], + [37.392, 2.215, 2.242], + [37.426, 2.81, 2.702], + [37.441, 4.637, 4.758], + [37.714, 2.63, 2.646], + [37.473, 1.47, 1.382], + [37.288, 1.351, 1.334], + [37.336, 1.383, 1.379], + [37.474, 3.265, 3.237], + [37.731, 6.141, 6.129], + [37.344, 0.974, 0.994], + [37.477, 2.34, 2.317], + [37.466, 2.769, 2.627], + [38.537, 7.795, 6.911], + [37.972, 4.879, 4.91], + [38.003, 4.893, 5.29], + [37.387, 1.608, 1.675], + [2.658, 0.562, 0.554], + [2.703, 0.558, 0.557], + [2.636, 0.557, 0.555], + [2.768, 0.674, 0.694], + [2.562, 0.528, 0.51], + [2.58, 0.511, 0.495], + [2.585, 0.5, 0.502] +] + } + \ No newline at end of file diff --git a/ravel/results/20261004/c6a.metal.json b/ravel/results/20261004/c6a.metal.json new file mode 100644 index 0000000000..dfc32cbb14 --- /dev/null +++ b/ravel/results/20261004/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 1182, + "data_size": 9844635042, + "concurrent_qps": 3.808, + "concurrent_error_ratio": 0, + "result": [ + [0.475, 0.394, 0.475], + [37.417, 0.875, 0.814], + [37.5, 0.787, 0.732], + [37.511, 0.757, 0.678], + [37.718, 0.995, 0.932], + [37.758, 1.047, 0.929], + [0.716, 0.678, 0.646], + [37.739, 0.957, 0.928], + [37.881, 1.154, 1.113], + [37.913, 1.276, 1.342], + [37.926, 1.123, 1.118], + [37.967, 1.192, 1.133], + [37.755, 1.05, 0.995], + [38.071, 1.341, 1.284], + [37.812, 1.111, 1.06], + [37.644, 1.065, 1.02], + [37.83, 1.246, 1.241], + [37.741, 1.2, 1.106], + [37.948, 1.682, 1.621], + [33.279, 0.858, 0.838], + [37.606, 1.112, 0.977], + [37.8, 1.36, 1.245], + [37.879, 1.533, 1.493], + [37.93, 1.474, 1.368], + [37.537, 0.874, 0.816], + [37.494, 0.891, 0.822], + [37.5, 0.903, 0.851], + [37.862, 1.458, 1.401], + [38.058, 1.931, 1.826], + [37.568, 0.838, 0.795], + [37.793, 1.213, 1.094], + [37.845, 1.174, 1.069], + [38.307, 2.245, 2.327], + [37.825, 1.763, 1.769], + [37.847, 1.82, 1.806], + [37.704, 1.029, 1], + [2.926, 0.788, 0.736], + [2.909, 0.796, 0.743], + [2.901, 0.775, 0.763], + [2.988, 0.896, 0.894], + [2.854, 0.803, 0.798], + [2.92, 0.861, 0.757], + [2.952, 0.811, 0.819] +] + } + \ No newline at end of file diff --git a/ravel/results/20261004/c7a.metal-48xl.json b/ravel/results/20261004/c7a.metal-48xl.json new file mode 100644 index 0000000000..ec8bcd6bb8 --- /dev/null +++ b/ravel/results/20261004/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 1289, + "data_size": 9844635025, + "concurrent_qps": 5.475, + "concurrent_error_ratio": 0, + "result": [ + [0.571, 0.5, 0.517], + [37.472, 0.759, 0.746], + [37.383, 0.693, 0.672], + [37.416, 0.691, 0.639], + [37.594, 0.921, 0.873], + [37.598, 0.902, 0.88], + [0.634, 0.579, 0.557], + [37.619, 0.819, 0.829], + [37.758, 1.059, 1.059], + [37.806, 1.109, 1.106], + [37.831, 1.042, 0.992], + [37.751, 1.014, 0.956], + [37.662, 0.977, 0.915], + [37.983, 1.185, 1.135], + [37.638, 0.971, 0.923], + [37.621, 0.918, 0.914], + [37.7, 1.075, 1.044], + [37.614, 1.042, 1.05], + [37.792, 1.636, 1.535], + [33.043, 0.737, 0.717], + [37.466, 0.853, 0.792], + [37.655, 1.006, 0.927], + [37.735, 1.215, 1.131], + [37.887, 1.297, 1.233], + [37.471, 0.788, 0.761], + [37.428, 0.8, 0.747], + [37.471, 0.801, 0.755], + [37.695, 1.038, 1.021], + [38.008, 1.669, 1.602], + [37.472, 0.7, 0.692], + [37.721, 1.042, 0.963], + [37.752, 1.057, 1.01], + [38.055, 1.9, 1.823], + [37.727, 1.525, 1.376], + [37.695, 1.47, 1.415], + [37.572, 0.924, 0.903], + [2.806, 0.732, 0.72], + [2.831, 0.716, 0.704], + [2.834, 0.72, 0.719], + [2.931, 0.787, 0.802], + [2.767, 0.758, 0.691], + [2.763, 0.725, 0.705], + [2.779, 0.687, 0.679] +] + } + \ No newline at end of file diff --git a/ravel/results/20261004/c8g.4xlarge.json b/ravel/results/20261004/c8g.4xlarge.json new file mode 100644 index 0000000000..90d5dede02 --- /dev/null +++ b/ravel/results/20261004/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 709, + "data_size": 9844635035, + "concurrent_qps": 0.615, + "concurrent_error_ratio": 0.113, + "result": [ + [0.523, 0.492, 0.502], + [37.409, 0.796, 0.811], + [37.286, 0.86, 0.857], + [37.245, 0.876, 0.858], + [37.304, 1.206, 1.208], + [37.353, 1.39, 1.362], + [0.531, 0.516, 0.509], + [37.308, 0.806, 0.778], + [37.335, 1.386, 1.404], + [37.455, 1.571, 1.566], + [37.355, 1.136, 1.155], + [37.364, 1.183, 1.171], + [37.378, 1.329, 1.227], + [37.55, 1.533, 1.572], + [37.381, 1.35, 1.343], + [37.337, 1.355, 1.26], + [37.446, 1.961, 1.954], + [37.376, 2.07, 1.984], + [37.47, 2.106, 2.222], + [33.01, 0.777, 0.803], + [37.36, 1.663, 1.564], + [37.359, 2.071, 1.965], + [37.379, 2.958, 3.07], + [37.667, 1.998, 2.027], + [37.362, 1.111, 1.073], + [37.294, 1.06, 1.047], + [37.293, 1.089, 1.08], + [37.408, 2.009, 2.155], + [37.593, 4.614, 4.365], + [37.288, 0.839, 0.817], + [37.377, 1.629, 1.508], + [37.414, 1.742, 1.758], + [38.034, 4.978, 3.574], + [37.684, 2.802, 2.763], + [37.557, 2.728, 2.757], + [37.33, 1.169, 1.186], + [2.55, 0.567, 0.562], + [2.58, 0.558, 0.567], + [2.595, 0.574, 0.557], + [2.615, 0.604, 0.627], + [2.505, 0.542, 0.538], + [2.532, 0.532, 0.533], + [2.497, 0.532, 0.525] +] + } + \ No newline at end of file diff --git a/ravel/results/20261004/c8g.metal-48xl.json b/ravel/results/20261004/c8g.metal-48xl.json new file mode 100644 index 0000000000..d9c91de458 --- /dev/null +++ b/ravel/results/20261004/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 760, + "data_size": 9844635015, + "concurrent_qps": 5.508, + "concurrent_error_ratio": 0, + "result": [ + [0.389, 0.351, 0.356], + [37.207, 0.62, 0.604], + [37.116, 0.492, 0.482], + [37.186, 0.469, 0.454], + [37.376, 0.788, 0.848], + [37.363, 0.706, 0.707], + [0.503, 0.482, 0.473], + [37.4, 0.723, 0.607], + [37.496, 0.854, 0.88], + [37.459, 0.908, 0.83], + [37.544, 0.884, 0.908], + [37.551, 0.905, 0.852], + [37.441, 0.83, 0.789], + [37.627, 0.968, 0.916], + [37.436, 0.86, 0.87], + [37.391, 0.759, 0.772], + [37.433, 1.043, 0.968], + [37.427, 0.976, 0.942], + [37.417, 1.483, 1.578], + [32.945, 0.563, 0.549], + [37.242, 0.736, 0.711], + [37.388, 0.975, 0.901], + [37.382, 1.098, 1.091], + [37.519, 1.062, 0.995], + [37.207, 0.673, 0.64], + [37.246, 0.58, 0.566], + [37.199, 0.595, 0.588], + [37.477, 0.997, 0.961], + [37.574, 1.459, 1.412], + [37.169, 0.531, 0.526], + [37.458, 0.823, 0.792], + [37.391, 0.933, 0.898], + [37.799, 1.867, 1.758], + [37.471, 1.323, 1.317], + [37.373, 1.473, 1.326], + [37.383, 0.796, 0.862], + [2.624, 0.6, 0.594], + [2.68, 0.607, 0.624], + [2.575, 0.588, 0.603], + [2.686, 0.612, 0.7], + [2.706, 0.594, 0.614], + [2.554, 0.603, 0.597], + [2.63, 0.607, 0.595] +] + } + \ No newline at end of file From d819cd2201553f7912ace30ade7003188fe2c68a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 4 Oct 2026 06:23:32 +0000 Subject: [PATCH 3/3] Add benchmark results for ravel (c6a.2xlarge, c6a.xlarge) --- ravel/results/20261004/c6a.2xlarge.json | 60 +++++++++++++++++++++++++ ravel/results/20261004/c6a.xlarge.json | 60 +++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 ravel/results/20261004/c6a.2xlarge.json create mode 100644 ravel/results/20261004/c6a.xlarge.json diff --git a/ravel/results/20261004/c6a.2xlarge.json b/ravel/results/20261004/c6a.2xlarge.json new file mode 100644 index 0000000000..17357b12a7 --- /dev/null +++ b/ravel/results/20261004/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 1448, + "data_size": 9844635115, + "concurrent_qps": 0.138, + "concurrent_error_ratio": 0.341, + "result": [ + [0.528, 0.454, 0.453], + [37.413, 30.111, 28.276], + [37.364, 31.097, 28.657], + [37.317, 30.882, 29.043], + [37.501, 31.826, 29.429], + [37.497, 32.492, 30.573], + [0.533, 0.468, 0.474], + [37.406, 31.527, 29.196], + [37.532, 32.368, 29.766], + [37.7, 32.835, 29.916], + [37.475, 31.838, 29.708], + [37.488, 32.322, 29.616], + [37.582, 32.8, 30.052], + [38.112, 32.673, 30.288], + [37.546, 32.855, 29.852], + [37.56, 32.229, 29.422], + [37.718, 33.52, 29.963], + [37.523, 33.056, 30.046], + [37.845, 35.138, 30.012], + [59.303, 41.407, 22.665], + [37.466, 31.99, 29.106], + [37.48, 32.028, 29.535], + [37.524, 33.296, 29.746], + [37.808, 33.524, 30.709], + [37.325, 31.788, 28.961], + [37.309, 31.687, 28.92], + [37.345, 31.783, 29.086], + [37.538, 31.442, 29.165], + [38.061, 33.329, 31.184], + [37.425, 32.105, 29.195], + [37.562, 32.076, 29.852], + [37.662, 32.798, 29.926], + [null, null, null], + [38.526, 34.889, 35.395], + [38.497, 36.474, 35.953], + [37.604, 32.12, 29.607], + [2.697, 0.633, 0.627], + [2.7, 0.641, 0.628], + [2.696, 0.613, 0.601], + [2.889, 0.772, 0.781], + [2.621, 0.548, 0.539], + [2.627, 0.551, 0.534], + [2.588, 0.522, 0.507] +] + } + \ No newline at end of file diff --git a/ravel/results/20261004/c6a.xlarge.json b/ravel/results/20261004/c6a.xlarge.json new file mode 100644 index 0000000000..5c8128b797 --- /dev/null +++ b/ravel/results/20261004/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Ravel", + "date": "2026-10-04", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","column-oriented","stateless","S3"], + "load_time": 2905, + "data_size": 9844655000, + "concurrent_qps": 0.052, + "concurrent_error_ratio": 0.97, + "result": [ + [1.022, 0.566, 0.563], + [40.681, 30.396, 29.167], + [40.474, 30.598, 28.948], + [37.547, 30.322, 29.144], + [40.658, 33.171, 31.045], + [38.324, 32.342, 30.716], + [0.986, 0.555, 0.551], + [37.962, 30.725, 29.341], + [40.022, 33.238, 31.941], + [40.885, 32.273, 30.777], + [37.659, 30.923, 28.57], + [38.105, 31.604, 29.34], + [38.173, 32.492, 30.627], + [41.099, 35.847, 37.123], + [40.597, 33.08, 31.658], + [38.027, 31.471, 32.926], + [39.163, 40.254, 39.811], + [41.333, 38.227, 38.385], + [null, null, null], + [58.662, 42.944, 40.298], + [38.138, 31.285, 29.588], + [40.344, 34.446, 33.648], + [47.953, 42.873, 40.248], + [41.038, 39.291, 39.07], + [38.06, 31.618, 30.159], + [40.347, 32.516, 30.947], + [37.628, 31.021, 29.766], + [40.218, 32.635, 31.818], + [41.677, 37.463, 40.708], + [37.937, 31.741, 29.585], + [40.548, 34.211, 32.575], + [40.803, 34.727, 37.802], + [null, null, null], + [null, null, null], + [null, null, null], + [40.974, 32.455, 30.095], + [3.428, 0.891, 0.882], + [3.645, 0.896, 0.889], + [3.355, 0.83, 0.843], + [3.308, 1.152, 1.129], + [2.853, 0.708, 0.698], + [3.223, 0.736, 0.706], + [4.003, 0.662, 0.649] +] + } + \ No newline at end of file