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
Merge the individuals archives without holding them in memory
The merge accumulated every individual's merged content before writing any of
it. On a laptop that is merely wasteful; under the 1GiB a container is allowed
on the cluster it is fatal, and chr6's fifteen inputs -- 109MB compressed,
several times that expanded -- killed the task outright with OOMKilled.
Every input carries the same members in the same order, so they are now walked
in lockstep and each individual's merged content is written as it is formed.
Reading each input once is what makes it affordable: a .tar.gz is not seekable,
so looking members up by name would decompress the whole archive per lookup.
Building the archive from a fully-joined mapping had the same shape of problem
in miniature, doubling peak memory at the moment of writing, so write_archive
now joins one member at a time and accepts either text or a sequence of strings.
Merging chr7's three chunks: 36.6MB peak and 3.31s before, 16.5MB and 1.27s
after, with the output archive identical member for member.
Verified against the previous implementation on chr11 split three ways: all
three individuals archives and the merged one match on member names, types,
modes and content hashes.
Worker image 1.7.
0 commit comments