fixed unability to run more than one commit proxy in small configurations#13400
Open
MarkSh1 wants to merge 2 commits into
Open
fixed unability to run more than one commit proxy in small configurations#13400MarkSh1 wants to merge 2 commits into
MarkSh1 wants to merge 2 commits into
Conversation
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.
Rebase PR #10411
Co-authored-by: @oleg68 Oleg Samarin [osamarin@openintegration.inc]
Fixed unability to run more than one commit proxy in small configurations
Problem statement
By default, the desired nubrer of commit proxies is 3. But in small configurations with 3 stateless processes (and any number of transaction and storage processes) foundationdb runs only one commit proxy process, that may cause some performance issues with high write volume.
Any attempts to change the number of proxies with
configure commit_proxies=2and so on do not help: it change only theDesired commit proxiesvalue shown by thestatusfdbcli command, but do not change the actual number of commit proxies.Steps to reproduce
fdbcli --exec "status json" | grep commit_proxyExpected result
Three lines
Actual result
Only one line
Findings
As far as I understand a list of worker candidates is determined by the
ClusterControllerData::getWorkersForRoleInDatacentermethod.The reason why it doesn't return more than one worker is the condition
id_used[it.first] <= minWorker.get().usedthat is never satisfied with small number of stateless processes.Proposal
fitness_workersregardless how much they are used.Proposed PR implements these ideas. It
used_fitnesslocal variable that is filled by the lowest fitness value of availdable processesused_fitnesswhen the result list is filled to use only workers with the smallest fitness valueid_used[it.first] <= minWorker.get().usedAfter applying this PR all desired number of commit proxies is recruited as long as there is a sufficient number number of stateless processes.