-
Notifications
You must be signed in to change notification settings - Fork 492
Improve shard collocation while limiting to 3 pipelines per node #5808
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: main
Are you sure you want to change the base?
Conversation
71727e5 to
4f54d65
Compare
quickwit/quickwit-control-plane/src/indexing_scheduler/scheduling/scheduling_logic.rs
Outdated
Show resolved
Hide resolved
96ac7ef to
abc54c8
Compare
|
Note: when using ingest V2, the effect of this PR should be moderate. Indeed, ingest V2 creates shards on nodes randomly: quickwit/quickwit/quickwit-control-plane/src/ingest/ingest_controller.rs Lines 114 to 125 in 52ac2e1
This means that in most cases it's the affinity placement stage that is going to scatter shards across indexers. It's only when nodes don't have enough (artificially scaled) capacity during that stage that the placement change from this PR will kick in. In practice this happens fairly frequently. |
abc54c8 to
acdb18a
Compare
|
This still requires some at-scale tests before merging |
|
@rdettai I can participate in testing. I have a problem with uneven distribution of the partitions between 2 indexers. 1 indexers always gets the whole set of topic's partitions and because I have a few very loaded topics that cause performance degradation. |
|
Thanks @dpavlov-smartling for testing this.
I'm a bit surprised by the behavior you are describing after running this branch. We are using it and it does improve balancing significantly. Have you start scaling down the whole cluster (including the control plane)? |
|
Hello @rdettai.
As for now I use |
|
hey @rdettai @rdettai-sk, do you want other people to help test this fix? We have 500 kakfa sources and 4 indexers with this configuration: indexer:
replicaCount: 4
persistentVolume:
storage: 200Gi
resources:
limits:
cpu: 32000m
memory: 48Gi
requests:
cpu: 4000m
memory: 8GiThe ingest rate of these sources is extremely varied with only a few indexes having very high volume. Usually we have one working at close to 2/3-3/4 capacity, another working at 1/3 capacity, and 2 working at basically 10%. |
|
Hi @daniele-br you should definitely test this branch, it has helped a lot for our setup, and our load distribution is a bit similar to yours (probably a bit less skewed). There are still distribution issues, especially when adding new nodes and I'm planning to work on it in the coming weeks. |
acdb18a to
6c7423e
Compare
|
ok @rdettai, I'm confused about how the tagging works and how we know whether the source code should match the behavior of specific tags. If we use this branch, does it just represent a base of an airmail image? Is there something that explains the tagging strategy, so that we know which behavior to expect? |
|
These are not official builds, |
Description
Closes #4470
Closes #5747
Closes #4630
Improve shard collocation
When placing new shards for an existing source, when affinity is not defined (e.g Kafka source), we currently have no affinity for nodes where we have existing indexing pipelines. This can create a fragmented distribution of shards.
This solution is not perfect, ideally we should split the assignation in two steps (just as we do for the shard affinity):
Limit to 3 pipelines per node
See #5792
How was this PR tested?
Added unit test