top | item 39095226

(no title)

darwin67 | 2 years ago

Which part of BEAM are you talking about? I know some cases can be solved by it already, but not almost every need.

The fairness of the BEAM scheduler is not the same as multi-tenant fairness. I'm aware of lcnt in Erlang that helps with contention, but that will have a hit in throughput like any other locks.

Unless I'm missing something?

discuss

order

brightball|2 years ago

The way the BEAM scheduler works you get max runtime per process before it switches over to another, which lets you run potentially millions of concurrent processes without having to worry about 1 taking it over because it was heavier. Your big stuff takes longer, but your response times across the board will remain very consistent.

If you wanted to make it truly fair you could spin up a GenServer per tenant and you would have a max concurrency per tenant of 1, but still all executing equally in parallel without 1 tenant stealing CPU time from the others. Contention is a non-issue. Fairness is built in.

You get the fault tolerance, isolation and observability as a by product too.

That's just my first reaction on reading it.