You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 80ccd92
Browse filesBrowse the repository at this point in the historyBrowse files
DPL Analysis: cap the read buffers of the native AOD reader
The native reader fetches the compressed baskets of all the trees a DF is
read from with one coalesced read into one buffer, kept until the DF is
done, and the buffer pool keeps up to two of them for reuse. On Run 2 AO2Ds
(about 62 MB of compressed data per DF) this holds about 75 MB of private
memory per reader for the whole job: IgProf shows the largest allocation of
the reader, 72 MB, in ReadBufferPool::get, and smaps shows it as anonymous
memory, unaffected by fewer threads, no prefetch or MALLOC_ARENA_MAX=1.
--aod-reader-buffer-mb N caps that. The trees of a DF, in the order they
are read, are packed into read plans of at most N MB of compressed data;
a plan is freed when the reads of its trees are done, and the buffer pool
keeps at most N MB of free buffers. A DF which fits is still read in one
go, so small DFs are not affected, and a single tree larger than N gets a
plan of its own. The lookahead for remote files prepares only the trees
which fit. Only the trees the reader asks for are read, as before.
The default is 0, no limit, which keeps the current behaviour until the
default is chosen from measurements.
ConfigParamSpec{"aod-reader-threads", VariantType::Int, 1, {"Decompression threads of the native AOD reader"}},
228
228
ConfigParamSpec{"aod-reader-prefetch", VariantType::Int, 1, {"DFs the native AOD reader prepares ahead for remote files: 0 (off) or 1"}},
229
229
ConfigParamSpec{"aod-reader-local-io", VariantType::String, "pread", {"How the native AOD reader reads local files: pread or mmap"}},
230
+
ConfigParamSpec{"aod-reader-buffer-mb", VariantType::Int, -1, {"Most MB the native AOD reader holds in read buffers: 0 for no limit, -1 for 32 MB for local files and 64 MB for remote ones"}},
0 commit comments