Native histograms: optimize chunk iterator usage #7274
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What this PR does
Prometheus introduced a possibility to optionally reuse the memory area of the given histogram or float histogram to reduce allocation (prometheus/prometheus#13340). We highlight the functions from the
chunkenc.Iterator
interface, that are of particular importance for the above mentioned change:Before #7219, which allowed Mimir to use Prometheus' optimizations mentioned above, Mimir's
querier/iterator.chunkIterator
used to implement Prometheus'chunkenc.Iterator
, but the signatures ofquerier/iterator.chunkIterator
'sAtHistogram()
andAtFloatHistogram()
were not enriched with the optional*histogram.Histogram
and*histogram.FloatHistogram
arguments in #7219. This PR fixes that problem, so thatquerier/iterator.chunkIterator
is an implementation ofchunkenc.Iterator
again.Moreover, this PR ensures that Mimir's
querier/iterator.chunkIterator
andquerier/iterator.chunkMergeIterator
, both implementations of thechunkenc.Iterator
interace, reuse histograms and float histograms memory, analogously to what is done in Prometheus.Which issue(s) this PR fixes or relates to
Part of #7235
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]
.about-versioning.md
updated with experimental features.