Skip to content
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

master: Use difference between racks to calculate distance #523

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

jdieter
Copy link
Contributor

@jdieter jdieter commented Feb 24, 2017

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 jdieter@lesbg.com

@MPaszkiewicz
Copy link
Contributor

Hi,
Your commit is currently under review:
http://cr.skytechnology.pl:8081/#/c/2861/

@jdieter
Copy link
Contributor Author

jdieter commented Feb 27, 2017

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)?

@MPaszkiewicz
Copy link
Contributor

Yes, I think it makes sense, especially that this distance value is stored as uint32_t anyway

@jdieter
Copy link
Contributor Author

jdieter commented Mar 1, 2017

Ok, I've updated it and I think I've got the overflow checks right.

@4Dolio
Copy link

4Dolio commented Mar 27, 2017

Thanks for linking #269 and happy to see the code work.

DarkHaze and others added 4 commits May 11, 2017 14:56
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 <jdieter@lesbg.com>
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 <jdieter@lesbg.com>
@MarinBernard
Copy link

Hi,

The feature would be quite appreciated here. Do you have any plan to commit this patch any time soon?

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants