chore(blooms): Reduce memory footprint of download queue #18242
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.
The download queue has a fixed size of 100k elements and is implemented using a channel. Since the channel has a fixed size, this will allocate
capacity * object size
, where the object isdownloadRequest[BlockRef, BlockDirectory]
.This PR changes the channel from a channel of objects (
chan downloadRequest[T, R]
) to a channel of pointers (chan *downloadRequest[T, R]
) which should significantly reduce the permanently allocated memory for the queue.The screenshots shows a 3h memory profile (inuse space) of a set of index gateways, where the
bloomshipper.newDownloadQueue
occupies almost a quarter of the inuse memory.