[ET Trac] [Einstein Toolkit] #1878: hdf5 deflate fragments memory
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Wed Apr 27 10:19:08 CDT 2016
#1878: hdf5 deflate fragments memory
-------------------------+--------------------------------------------------
Reporter: knarf | Owner:
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: Other | Version: development version
Keywords: HDF5 |
-------------------------+--------------------------------------------------
In ticket #1874, a problem with memory management of the HDF5 zlib deflate
filter was mentioned. This ticket here was opened to collect information
about this problem, with the aim of eventually providing a patch to HDF5,
submitting a ticket to the HDF5 developers, and possibly implementing that
change as patch just for the ET.
The problem is that HDF5 allocates while deflating an output buffer (for
the uncompressed data) of the size of the compressed data, and then makes
it larger (by a factor of two - another problem), if needed (almost
always).
This happens in H5Z_filter_deflate() in H5Zdeflate.c . One way to solve
this would be to use the z_strm.total_in value, which holds the size of
the uncompressed data, saved by the compressor. However, I am currently
unsure whether this is a value we can always rely on. The format
specification mentions it as required field, while the zlib documentation
talks about it as "may have been saved by the compressor". I didn't look
at any actual data.
In any case, if this value is present, we can use it to allocate the
output buffer of the correct size. If it isn't present, the best we could
do is at least not increase the size by a factor of two, which is known to
cause memory fragmentation.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1878>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list