-
Notifications
You must be signed in to change notification settings - Fork 188
master: Use difference between racks to calculate distance #523
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
base: master
Are you sure you want to change the base?
Conversation
Hi, |
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)? |
Yes, I think it makes sense, especially that this distance value is stored as uint32_t anyway |
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! |
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]