Common user-tunable settings for storing RNTuples.
All page sink classes need to support the common options.
Option name | Type | Default | Description |
---|---|---|---|
Compression | std::uint32_t | RCompressionSetting::EDefaults::kUseGeneralPurpose | The compression settings for this RNTuple |
ApproxZippedClusterSize | std::size_t | 128 MiB | Approximation of the target compressed cluster size |
MaxUnzippedClusterSize | std::size_t | 1280 MiB | 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. |
InitialUnzippedPageSize | std::size_t | 256 | Initially, columns start with a page of this size. The default value is chosen to accomodate at least 32 elements of 64 bits, or 64 elements of 32 bits. If more elements are needed, pages are increased up until the byte limit given by the option |
MaxUnzippedPageSize | std::size_t | 1 MiB | Pages can grow only to the given limit in bytes. |
PageBufferBudget | std::size_t | 0 / auto | The maximum size that the sum of all page buffers used for writing into a persistent sink are allowed to use. If set to zero, RNTuple will auto-adjust the budget based on the value of |
UseBufferedWrite | bool | true | Whether to use buffered writing (with RPageSinkBuf). This buffers compressed pages in memory, reorders them to keep pages of the same column adjacent, and coalesces the writes when committing a cluster. |
UseDirectIO | bool | false | Whether to use Direct I/O for writing. Note that this introduces alignment requirements that may very between filesystems and platforms. |
WriteBufferSize | std::size_t | 4 MiB | Buffer size to use for writing to files, must be a multiple of 4096 bytes. Testing suggests that 4MiB gives best performance (with Direct I/O) at a reasonable memory consumption. |
UseImplicitMT | EImplicitMT | EImplicitMT::kDefault | Whether to use implicit multi-threading to compress pages. Only has an effect if buffered writing is turned on. The meaning of EImplicitMT::kDefault depends on the used writer: For the (sequential) RNTupleWriter, it translates to EImplicitMT::kOn and the user has to manually disable the use of implicit multi-threading if it is not wanted. For the RNTupleParalellWriter, the implementation defaults to EImplicitMT::kOff in order to avoid interference with explicit parallelism that might create one RNTupleFillContext per thread. If implicit multi-threading is wanted on top of this, the user has to explicitly request EImplicitMT::kOn. |
EnablePageChecksums | bool | true | If set, checksums will be calculated and written for every page. If turned off, will also turn off |
EnableSamePageMerging | bool | true | If set, identical pages are deduplicated and aliased on disk. Requires |
Definition at line 182 of file RNTupleWriteOptions.hxx.
Public Types | |
enum class | EImplicitMT { kOff , kOn , kDefault } |
Static Public Attributes | |
static constexpr std::uint64_t | kDefaultMaxKeySize = 0x4000'0000 |
Protected Attributes | |
std::size_t | fApproxZippedClusterSize = 128 * 1024 * 1024 |
std::uint32_t | fCompression {RCompressionSetting::EDefaults::kUseGeneralPurpose} |
bool | fEnablePageChecksums = true |
bool | fEnableSamePageMerging = true |
std::size_t | fInitialUnzippedPageSize = 256 |
std::uint64_t | fMaxKeySize = kDefaultMaxKeySize |
Specifies the max size of a payload storeable into a single TKey. | |
std::size_t | fMaxUnzippedClusterSize = 10 * fApproxZippedClusterSize |
std::size_t | fMaxUnzippedPageSize = 1024 * 1024 |
std::size_t | fPageBufferBudget = 0 |
bool | fUseBufferedWrite = true |
bool | fUseDirectIO = false |
EImplicitMT | fUseImplicitMT = EImplicitMT::kDefault |
std::size_t | fWriteBufferSize = 4 * 1024 * 1024 |
#include <ROOT/RNTupleWriteOptions.hxx>
Enumerator | |
---|---|
kOff | |
kOn | |
kDefault |
Definition at line 184 of file RNTupleWriteOptions.hxx.
|
virtualdefault |
|
virtual |
Reimplemented in ROOT::Experimental::RNTupleWriteOptionsDaos.
Definition at line 48 of file RNTupleWriteOptions.cxx.
|
inline |
Definition at line 225 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 218 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 252 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 262 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 231 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 265 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 228 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 234 of file RNTupleWriteOptions.hxx.
std::size_t ROOT::RNTupleWriteOptions::GetPageBufferBudget | ( | ) | const |
Definition at line 85 of file RNTupleWriteOptions.cxx.
|
inline |
Definition at line 240 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 243 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 249 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 246 of file RNTupleWriteOptions.hxx.
void ROOT::RNTupleWriteOptions::SetApproxZippedClusterSize | ( | std::size_t | val | ) |
Definition at line 53 of file RNTupleWriteOptions.cxx.
|
inline |
Definition at line 220 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 219 of file RNTupleWriteOptions.hxx.
|
inline |
Note that turning off page checksums will also turn off the same page merging optimization (see tuning.md)
Definition at line 254 of file RNTupleWriteOptions.hxx.
void ROOT::RNTupleWriteOptions::SetEnableSamePageMerging | ( | bool | val | ) |
Definition at line 77 of file RNTupleWriteOptions.cxx.
void ROOT::RNTupleWriteOptions::SetInitialUnzippedPageSize | ( | std::size_t | val | ) |
Definition at line 65 of file RNTupleWriteOptions.cxx.
void ROOT::RNTupleWriteOptions::SetMaxUnzippedClusterSize | ( | std::size_t | val | ) |
Definition at line 59 of file RNTupleWriteOptions.cxx.
void ROOT::RNTupleWriteOptions::SetMaxUnzippedPageSize | ( | std::size_t | val | ) |
Definition at line 71 of file RNTupleWriteOptions.cxx.
|
inline |
Definition at line 238 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 241 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 244 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 250 of file RNTupleWriteOptions.hxx.
|
inline |
Definition at line 247 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 198 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 197 of file RNTupleWriteOptions.hxx.
Definition at line 207 of file RNTupleWriteOptions.hxx.
Definition at line 208 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 200 of file RNTupleWriteOptions.hxx.
|
protected |
Specifies the max size of a payload storeable into a single TKey.
When writing an RNTuple to a ROOT file, any payload whose size exceeds this will be split into multiple keys.
Definition at line 211 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 199 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 201 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 202 of file RNTupleWriteOptions.hxx.
Definition at line 203 of file RNTupleWriteOptions.hxx.
Definition at line 204 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 206 of file RNTupleWriteOptions.hxx.
|
protected |
Definition at line 205 of file RNTupleWriteOptions.hxx.
|
staticconstexpr |
Definition at line 191 of file RNTupleWriteOptions.hxx.