Fix RAM usage estimation of LiveVersionMap. #20123
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.
I was writing tests for RAM usage estimation of LiveVersionMap and found a
couple issues:
via
new BytesRef(CharSequence)
which creates abyte[]
whose size is 3xthe length of the provided char sequence. Given that our uids are most of
times ASCII sequences, this is a waste of memory.
VersionValue
was usingtranslogLocation.size
instead oftranslogLocation.ramBytesUsed()
for RAM estimation, which is completelyunrelated to the memory footprint of the
Translog.Location
object.In particular, the latter issue could cause RAM usage estimation to be
significantly overestimated, especially on large documents.
I also added tests for ram accounting.
Relates #19787