Hi,

TLDR: We would like to benchmark a simple variant of the Two-Choice load
balancing algorithm on HAProxy. Is this benchmark/setup
<https://github.com/haproxytech/bench-algo-p2c> still the suggested
approach?


We would like to evaluate the following simple variant of the Two-Choice
algorithm for load balancing: For each request,
 1. Allocate to the least loaded of two randomly chosen servers (i.e., like
Two-Choice) with probability β.
 2. Otherwise, allocate to a random server.

Somewhat surprisingly we recently demonstrated in theory and simulations (
paper <https://arxiv.org/pdf/2302.04399.pdf>, slides
<https://www.cl.cam.ac.uk/~dl516/slides/spaa23_slides.pdf>, visualisation
<https://dimitrioslos.com/phdthesis/conf/spaa23.html>) that for suitably
chosen β, this outperforms Two-Choice when there is outdated information
(RTT is large, there are multiple allocators) or there is noise. The main
reason for this is that it allocates to lesser loaded servers less
aggressively than Two-Choice, so that it spreads the load more evenly (see this
figure <https://dimitrioslos.com/phdthesis/conf/figs/spaa23_tc_vs_opb.svg>).

We would like to see whether this result also implies improvements in
real-world load balancers, including HAProxy. For the evaluation purposes,
I have drafted a very (very) simple implementation (see here
<https://github.com/Dim131/haproxy>) and was wondering whether you could
give me some pointers for running benchmarks or evaluating against typical
workloads.

While I am working on this, I would be happy to implement/benchmark any
other load balancing algorithms (that may be in your TODO list).

Kind regards,
Dimitris

Reply via email to