Skip to content

[ntuple] Optimize memory layout of cluster descriptor#21258

Merged
jblomer merged 6 commits intoroot-project:masterfrom
jblomer:ntuple-opt-desc
Feb 17, 2026
Merged

[ntuple] Optimize memory layout of cluster descriptor#21258
jblomer merged 6 commits intoroot-project:masterfrom
jblomer:ntuple-opt-desc

Conversation

@jblomer
Copy link
Contributor

@jblomer jblomer commented Feb 12, 2026

More space-efficient memory layout of locator and page range. As a result, a typical cluster descriptor consumes about 1/3 less space in memory.

Copy link
Contributor

@silverweed silverweed left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@hahnjo hahnjo left a comment

Choose a reason for hiding this comment

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

LGTM

@github-actions
Copy link

github-actions bot commented Feb 12, 2026

Test Results

    22 files      22 suites   3d 11h 16m 2s ⏱️
 3 794 tests  3 793 ✅ 0 💤 1 ❌
76 312 runs  76 311 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 5bf81dd.

♻️ This comment has been updated with latest results.

Store the information of the on-disk locator in two 64bit integers. The
locator type and possibly 1 reserved bit (DAOS cage bit) are squeezed
into the most significant 4 bits of the locator size information. That
leaves 60 bits for the actual size, i.e. 1EB.

The variant around the position information is replaced by a pure
integer. Type-safety is ensured in custom code instead using the locator
type information.

Overall, that halfes the size of the RNTupleLocator struct from 64B to
32B.
By reordering of members, reduce the size of the struct from 32B to 24B.
To save space in the cluster descriptor, create the lookup data
structure for large number pages in a cluster+column only if that
cluster+column actually has many (>10) pages.

Reduces the typical size of RPageRange from 56B to 40B.
@jblomer jblomer merged commit dbb99f6 into root-project:master Feb 17, 2026
28 of 30 checks passed
@jblomer jblomer deleted the ntuple-opt-desc branch February 17, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments