Skip to content
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

Benchmarking a new load balancing algorithm #2168

Open
Dim131 opened this issue Jun 24, 2023 · 2 comments
Open

Benchmarking a new load balancing algorithm #2168

Dim131 opened this issue Jun 24, 2023 · 2 comments
Labels
Type: Idea This issue is a high-level idea for discussion.
Milestone

Comments

@Dim131
Copy link

Dim131 commented Jun 24, 2023

What should we add or change to make your life better?

We would like to benchmark a simple variant of the Two-Choice load balancing algorithm on YARP. Is there a recommended benchmark or a typical workload that you use?

The variant is the following: 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, slides, visualisation) 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 figure below).

spaa23_tc_vs_opb

We would like to see whether this result also implies improvements in real-world load balancers, including YARP. For the evaluation purposes, I have drafted a very simple implementation (see here) and was wondering whether you could give me some pointers for setting up and running a benchmark representative of a typical workload.

Kind regards,
Dimitris

P.S. I have reached out to a few other open source load balancers.

@Dim131 Dim131 added the Type: Idea This issue is a high-level idea for discussion. label Jun 24, 2023
@adityamandaleeka
Copy link
Member

@Dim131 this looks really promising, thanks for sharing your research!

I'm not sure how much the existing performance benchmarks we have would be useful for testing this kind of change, to be honest. But since you mentioned you're interested in setting up and running a benchmark, I think that would help us feel confident about the change.

Here are some pointers for the performance benchmarking we have today for YARP:

@adityamandaleeka adityamandaleeka added this to the Backlog milestone Jul 6, 2023
@Dim131
Copy link
Author

Dim131 commented Jul 12, 2023

Hi @adityamandaleeka,
Thank you very much for the detailed reply. I will try to run the experiments over the next few weeks and i will probably come back with a few more questions.

For now, I am quickly going through the yml specification for the benchmark. Do we need a 28-core sever or is this simulated? Also should the clients be on the same machine as the server?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Idea This issue is a high-level idea for discussion.
Projects
None yet
Development

No branches or pull requests

2 participants