diff --git a/tree/ntuple/v7/doc/BinaryFormatSpecification.md b/tree/ntuple/v7/doc/BinaryFormatSpecification.md index 96565c818e9e1..2f894b586dd42 100644 --- a/tree/ntuple/v7/doc/BinaryFormatSpecification.md +++ b/tree/ntuple/v7/doc/BinaryFormatSpecification.md @@ -1049,8 +1049,8 @@ This section summarizes default settings of `RNTupleWriteOptions`. | Default | Value | |----------------------------------------|------------------------------| -| Approximate Zipped Cluster | 100 MB | -| Max Unzipped Cluster | 1 GiB | +| Approximate Zipped Cluster | 128 MiB | +| Max Unzipped Cluster | 1280 MiB | | Max Unzipped Page | 1 MiB | ## Glossary diff --git a/tree/ntuple/v7/doc/tuning.md b/tree/ntuple/v7/doc/tuning.md index c73cd914f8f3c..c49f13baff08b 100644 --- a/tree/ntuple/v7/doc/tuning.md +++ b/tree/ntuple/v7/doc/tuning.md @@ -5,7 +5,7 @@ A cluster contains all the data of a given event range. As clusters are usually compressed and tied to event boundaries, an exact size cannot be enforced. Instead, RNTuple uses a *target size* for the compressed data as a guideline for when to flush a cluster. -The default cluster target size is 100 MB of compressed data. +The default cluster target size is 128 MiB of compressed data. The default can be changed by the `RNTupleWriteOptions`. The default should work well in the majority of cases. In general, larger clusters provide room for more and larger pages and should improve compression ratio and speed. @@ -13,7 +13,7 @@ However, clusters also need to be buffered during write and (partially) during r so larger clusters increase the memory footprint. A second option in `RNTupleWriteOptions` specifies the maximum uncompressed cluster size. -The default is 1 GiB. +The default is 10x the default cluster target size, i.e. ~1.2 GiB. This setting acts as an "emergency break" and should prevent very compressible clusters from growing too large. Given the two settings, writing works as follows: diff --git a/tree/ntuple/v7/inc/ROOT/RNTupleWriteOptions.hxx b/tree/ntuple/v7/inc/ROOT/RNTupleWriteOptions.hxx index 6626325b8bbb7..9ce2d60782bb6 100644 --- a/tree/ntuple/v7/inc/ROOT/RNTupleWriteOptions.hxx +++ b/tree/ntuple/v7/inc/ROOT/RNTupleWriteOptions.hxx @@ -61,10 +61,10 @@ public: protected: int fCompression{RCompressionSetting::EDefaults::kUseGeneralPurpose}; /// Approximation of the target compressed cluster size - std::size_t fApproxZippedClusterSize = 100 * 1000 * 1000; + std::size_t fApproxZippedClusterSize = 128 * 1024 * 1024; /// Memory limit for committing a cluster: with very high compression ratio, we need a limit /// on how large the I/O buffer can grow during writing. - std::size_t fMaxUnzippedClusterSize = 1024 * 1024 * 1024; + std::size_t fMaxUnzippedClusterSize = 10 * fApproxZippedClusterSize; /// Initially, columns start with a page large enough to hold the given number of elements. The initial /// page size is the given number of elements multiplied by the column's element size. /// If more elements are needed, pages are increased up until the byte limit given by fMaxUnzippedPageSize