-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bounds the transferLimit in OffheapVectorTransfer #2070
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The array list buffer was unnecessarily allocated a large memory irrespective of the vectors to transfer. This change considers total vectors Signed-off-by: Tejas Shah <shatejas@amazon.com>
shatejas
requested review from
heemin32,
navneet1v,
VijayanB,
vamshin,
jmazanec15,
naveentatikonda,
junqiu-lei,
martin-gaievski,
ryanbogan and
luyuncheng
as code owners
September 7, 2024 23:20
navneet1v
approved these changes
Sep 8, 2024
Comment on lines
+42
to
+45
private int computeTransferLimit(int bytesPerVector, int totalVectorsToTransfer) { | ||
int limit = (int) Math.max(1, KNNSettings.getVectorStreamingMemoryLimit().getBytes() / bytesPerVector); | ||
return Math.min(limit, totalVectorsToTransfer); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Not a blocker for this PR to be merged]
lets have some java doc on this explaining this logic.
naveentatikonda
approved these changes
Sep 9, 2024
naveentatikonda
merged commit Sep 9, 2024
0492fb3
into
opensearch-project:main
37 of 52 checks passed
opensearch-trigger-bot bot
pushed a commit
that referenced
this pull request
Sep 9, 2024
The array list buffer was unnecessarily allocated a large memory irrespective of the vectors to transfer. This change considers total vectors Signed-off-by: Tejas Shah <shatejas@amazon.com> (cherry picked from commit 0492fb3)
opensearch-trigger-bot bot
pushed a commit
that referenced
this pull request
Sep 9, 2024
The array list buffer was unnecessarily allocated a large memory irrespective of the vectors to transfer. This change considers total vectors Signed-off-by: Tejas Shah <shatejas@amazon.com> (cherry picked from commit 0492fb3)
navneet1v
pushed a commit
that referenced
this pull request
Sep 9, 2024
The array list buffer was unnecessarily allocated a large memory irrespective of the vectors to transfer. This change considers total vectors Signed-off-by: Tejas Shah <shatejas@amazon.com> (cherry picked from commit 0492fb3) Co-authored-by: Tejas Shah <shatejas@amazon.com>
navneet1v
pushed a commit
that referenced
this pull request
Sep 9, 2024
The array list buffer was unnecessarily allocated a large memory irrespective of the vectors to transfer. This change considers total vectors Signed-off-by: Tejas Shah <shatejas@amazon.com> (cherry picked from commit 0492fb3) Co-authored-by: Tejas Shah <shatejas@amazon.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 array list buffer was unnecessarily allocated a large memory irrespective of the number of vectors to transfer. This change considers total vectors
Description
Attached below is the heap usage for the duration of
BinaryIndexIT.testFaissHnswBinary_when1000Data_thenCreateIngestQueryWorks
testtransferLimitNotCapped.log: This is the current code in main. The max heap usage is 1.8 gb
transferLimitCapped.log: This is code with the current PR. The max heap usage is 1.2 gb
NoPreallocation.log: This is without allocating the transferLimit as a size for arraylist. The max heap usage is comparable to the code in PR which 1.1 gb
Capping the transfer limit is chosen as a solution over not preallocating to avoid fragmentation due to constant resizing of arraylist
Check List
--signoff
.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.