Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 25 additions & 18 deletions ravel/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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

Expand All @@ -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.
2 changes: 1 addition & 1 deletion ravel/install
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
60 changes: 60 additions & 0 deletions ravel/results/20261004/c6a.2xlarge.json
Original file line number Diff line number Diff line change
@@ -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]
]
}

60 changes: 60 additions & 0 deletions ravel/results/20261004/c6a.4xlarge.json
Original file line number Diff line number Diff line change
@@ -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]
]
}

60 changes: 60 additions & 0 deletions ravel/results/20261004/c6a.metal.json
Original file line number Diff line number Diff line change
@@ -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]
]
}

60 changes: 60 additions & 0 deletions ravel/results/20261004/c6a.xlarge.json
Original file line number Diff line number Diff line change
@@ -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]
]
}

60 changes: 60 additions & 0 deletions ravel/results/20261004/c7a.metal-48xl.json
Original file line number Diff line number Diff line change
@@ -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]
]
}

Loading
Loading