master: Use difference between racks to calculate distance#523
Open
jdieter wants to merge 4 commits intolizardfs:masterfrom
Open
master: Use difference between racks to calculate distance#523jdieter wants to merge 4 commits intolizardfs:masterfrom
jdieter wants to merge 4 commits intolizardfs:masterfrom
Conversation
Contributor
|
Hi, |
Contributor
Author
|
Looking at the review, would it make sense to convert the return value to uint32_t to give a wider range of distances (while obviously adding in the overflow checks as well)? |
Contributor
|
Yes, I think it makes sense, especially that this distance value is stored as uint32_t anyway |
Contributor
Author
|
Ok, I've updated it and I think I've got the overflow checks right. |
|
Thanks for linking #269 and happy to see the code work. |
This commit fixes high cpu usage in fs_periodic_file_test. Fixes lizardfs#547 Change-Id: Ia93173dd0f358f3ff606c7ebb5848f2b786b2158
This commit adds missing initialization of load_factor member to avoid valgrind warnings. Change-Id: Ifca5ad0afd781c6fc23090206750a6fe66573f10
Currently distance is calculated as 0 (same machine), 1 (same rack) and 2 (different racks). This doesn't allow any way of saying that rack 1 is closer to rack 2 than it is to rack 42. This patch changes the topology distance calculation by having different racks represented by the difference between the racks + 1 (since a distance of 1 means they're on the same rack). Rack 2 now has a distance of 2 from rack 1 (abs(2-1)+1=2) and a distance of 41 from rack 42 (abs(2-42)+1=41), which means clients on rack 2 will far prefer chunk servers on rack 1. Signed-off-by: Jonathan Dieter <[email protected]>
We use 64-bit version of std::min to make sure we don't overflow, but make sure it's <= max for uint32_t, then cast to uint32_t. Signed-off-by: Jonathan Dieter <[email protected]>
|
Hi, The feature would be quite appreciated here. Do you have any plan to commit this patch any time soon? Thanks! |
This file contains hidden or 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
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.
Currently distance is calculated as 0 (same machine), 1 (same rack) and 2
(different racks). This doesn't allow any way of saying that rack 1 is
closer to rack 2 than it is to rack 42.
This patch changes the topology distance calculation by having different
racks represented by the difference between the racks + 1 (since a
distance of 1 means they're on the same rack).
Rack 2 now has a distance of 2 from rack 1 (abs(2-1)+1=2) and a distance
of 41 from rack 42 (abs(2-42)+1=41), which means clients on rack 2 will
prefer chunk servers on rack 1.
The implementation idea came from #269 (comment)
I've built and tested this patch on our local 3.10.6 cluster, and it functions as advertised.
Signed-off-by: Jonathan Dieter [email protected]