Add vnswrr algorithm for upstream module. #1306
Merged
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.
Test Result
Introduction
The
VNSWRR
module is an efficient load balancing algorithm that is smooth, decentralized, and high-performance compared to Nginx's officialSWRR
algorithm.Example
Installation
Build Tengine with this module from source:
Directive
Enable
VNSWRR
load balancing algorithm.Performance
In the same pressure environment, the CPU consumption of
VNSWRR
algorithm accounts for0.27%
(ngx_http_upstream_get_vnswrr
).Compared with
VNSWRR
algorithm, the CPU consumption ofSWRR
(ngx_http_upstream_get_peer
39%
) is an order of magnitude higher thanVNSWRR
.In the above environment, the QPS of
VNSWRR
increases by60%
compared withSWRR
algorithm.Observing the changes of QPS and RT in the different back-end number scenarios.
Under SWRR algorithm, when the number of back-end for every
500
addition, then the QPS of Nginx decreases by about10%
and RT increases by about1 ms
. But under theVNSWRR
algorithm, QPS and RT do not change much.