dajac opened a new pull request, #16088:
URL: https://github.com/apache/kafka/pull/16088
This patch optimizes uniform (homogenous) assignor by avoiding creating a
copy of all the assignments. Instead, the assignor creates a copy only if the
assignment is updated. It is a sort of copy-on-write. This change reduces the
overhead of the TargetAssignmentBuilder when ran with the uniform (homogenous)
assignor.
Trunk:
```
Benchmark (memberCount)
(partitionsToMemberRatio) (topicCount) Mode Cnt Score Error Units
TargetAssignmentBuilderBenchmark.build 10000
10 100 avgt 5 24.535 ± 1.583 ms/op
TargetAssignmentBuilderBenchmark.build 10000
10 1000 avgt 5 24.094 ± 0.223 ms/op
JMH benchmarks done
```
```
Benchmark (assignmentType)
(assignorType) (isRackAware) (memberCount) (partitionsToMemberRatio)
(subscriptionType) (topicCount) Mode Cnt Score Error Units
ServerSideAssignorBenchmark.doAssignment INCREMENTAL
UNIFORM false 10000 10
HOMOGENEOUS 100 avgt 5 14.697 ± 0.133 ms/op
ServerSideAssignorBenchmark.doAssignment INCREMENTAL
UNIFORM false 10000 10
HOMOGENEOUS 1000 avgt 5 15.073 ± 0.135 ms/op
JMH benchmarks done
```
Patch:
```
Benchmark (memberCount)
(partitionsToMemberRatio) (topicCount) Mode Cnt Score Error Units
TargetAssignmentBuilderBenchmark.build 10000
10 100 avgt 5 3.376 ± 0.577 ms/op
TargetAssignmentBuilderBenchmark.build 10000
10 1000 avgt 5 3.731 ± 0.359 ms/op
JMH benchmarks done
```
```
Benchmark (assignmentType)
(assignorType) (isRackAware) (memberCount) (partitionsToMemberRatio)
(subscriptionType) (topicCount) Mode Cnt Score Error Units
ServerSideAssignorBenchmark.doAssignment INCREMENTAL
UNIFORM false 10000 10
HOMOGENEOUS 100 avgt 5 1.975 ± 0.086 ms/op
ServerSideAssignorBenchmark.doAssignment INCREMENTAL
UNIFORM false 10000 10
HOMOGENEOUS 1000 avgt 5 2.026 ± 0.190 ms/op
JMH benchmarks done
```
### Committer Checklist (excluded from commit message)
- [ ] Verify design and implementation
- [ ] Verify test coverage and CI build status
- [ ] Verify documentation (including upgrade notes)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]