Skip to content

update umbra and add umbra s3#951

Open
toschmidt wants to merge 2 commits into
ClickHouse:mainfrom
umbra-db:schmidt/umbra26.06
Open

update umbra and add umbra s3#951
toschmidt wants to merge 2 commits into
ClickHouse:mainfrom
umbra-db:schmidt/umbra26.06

Conversation

@toschmidt

@toschmidt toschmidt commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Updates Umbra and improves runtimes by loading the data from parquet and using compression.

This also resolves the memory usage problem on smaller instances reported in #543 and the infinite loop during the concurrent measurements in #891.

Add a new Umbra variant that stores the data on S3 instead of the EBS device. Similar to ClickHouse (web), which also uses S3 as a storage backend.

toschmidt and others added 2 commits June 22, 2026 13:16
Update the Umbra ClickBench definition: drop the primary key, ingest from
the Athena hits.parquet via the umbra.parquetview table function (instead
of a TSV COPY), and store the table with zstd compression (create.sql, the
Docker variant, reads /data/hits.parquet from the bind mount).

Switch the dataset download to hits.parquet (BENCH_DOWNLOAD_SCRIPT) to
match, require the loaded row count to equal exactly 99,997,497 (a partial
load otherwise sails through with implausibly fast timings on the
surviving subset), and run the Docker container --privileged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a new ClickBench system, "Umbra (S3)", that runs the Umbra benchmark
with the hits table stored on Amazon S3 (backend=cloud) instead of local
disk. It mirrors ../umbra; the only functional differences are where the
table data lives and the bucket-provisioning step it requires.

How it works:
  - create.sql registers an S3 bucket as Umbra remote storage and creates
    the table with backend=cloud, so table data lives in the bucket. The
    dataset (hits.parquet) is still ingested from a local copy via
    umbra.parquetview; only the resulting table is stored in S3.
  - create-bucket provisions the bucket before the run: it resolves AWS
    credentials (env vars, then `aws configure`, then an interactive
    prompt), creates a globally-unique clickbench-umbra-s3-<date>-<uuid>
    bucket, and writes bucket/region/keys to a gitignored, chmod-600
    .s3-env. The same static keys are handed to Umbra's `create remote
    storage` statement, so they must allow normal S3 data access.
  - load sources .s3-env automatically and fails fast with a clear message
    if the UMBRA_S3_* vars are unset. After ingest it asserts the table
    has exactly 99,997,497 rows, since Umbra has been observed to leave a
    partial table on memory-constrained hosts and still produce
    implausibly fast warm timings on the surviving subset.
  - Umbra addresses the bucket as s3://<bucket>:<region>/<path> — the
    region is part of the URI, not a separate option.
  - delete-bucket empties and deletes the bucket recorded in .s3-env and
    removes the file; idempotent and touches no IAM resources.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@toschmidt toschmidt force-pushed the schmidt/umbra26.06 branch from f18517e to 0c1d4b1 Compare June 22, 2026 11:17
@toschmidt toschmidt changed the title update umbra update umbra and add umbra s3 Jun 22, 2026
@rschu1ze rschu1ze self-assigned this Jun 30, 2026

@rschu1ze rschu1ze left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@toschmidt I get a permission denied error when I try to push to this PR.

/data/ClickBench (schmidt/umbra26.06 >) $ git push umbra schmidt/umbra26.06
remote: Permission to umbra-db/ClickBench.git denied to rschu1ze.
fatal: unable to access 'https://github.com/umbra-db/ClickBench.git/': The requested URL returned error: 403

Could I ask you to merge from main and resolve the conflicts?

Comment thread umbra/create.sql
);
copy hits from '/data/hits.tsv' with (format text);
clid integer not null
) with (compression=zstd);

@rschu1ze rschu1ze Jun 30, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the primary key definition is gone. Was this intentional?

Comment thread umbra/create.sql
);
copy hits from '/data/hits.tsv' with (format text);
clid integer not null
) with (compression=zstd);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re compression = zstd: I will not oppose this but it slightly violates the spirit of the benchmark. The rules say:

It's better to use the default settings and avoid fine-tuning. Configuration changes can be applied if it is considered strictly necessary and documented.

Fine-tuning and optimization for the benchmark are not recommended but allowed. In this case, add results for the vanilla configuration and tunes results separately (e.g. 'MyDatabase' and 'MyDatabase-tuned')

Running without compression=zstd or making zstd Umbra's default will be the preferred option.

Comment thread umbra/create.sql
clid integer not null
) with (compression=zstd);

-- Ingest from the Athena parquet rather than the TSV. Umbra's COPY-from-

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's fine to keep the comment l. 110-117 around but nobody will miss it if you remove it :-)

Comment thread umbra/start
--privileged \
--ulimit nofile=1048576:1048576 \
--ulimit memlock=-1:-1 \
-e ASYNCIO=0 \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L. 18 deserves a comment.

Comment thread umbra/start
-v "$(pwd)/db:/var/db" \
-v "$(pwd)/data:/data" \
-p 5432:5432 \
--privileged \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L. 8 isn't needed (the stop script already does this).
L. 9 can move into the stop script as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants