←back to thread

151 points ibobev | 2 comments | | HN request time: 0.001s | source
Show context
josefrichter ◴[] No.45653679[source]
Isn't this what Erlang/Elixir BEAM is all about?
replies(2): >>45660881 #>>45664494 #
1. ameliaquining ◴[] No.45660881[source]
How so? AFAIK BEAM is pretty much agnostic between work-stealing and work-sharding* architectures.

* I prefer the term "work-sharding" over "thread-per-core", because work-stealing architectures usually also use one thread per core, so it tends to confuse people.

replies(1): >>45665684 #
2. toast0 ◴[] No.45665684[source]
The BEAM schedulers are work stealing, and there's no way to bind a process to a scheduler (or at least, there's no publically documented way in upstream OTP).

You can adjust some settings for how schedulers work with respect to balancing load, but afaik, work stealing cannot be disabled... when a scheduler has no runnable processes, it will look at the runqueue of another scheduler and steal a runnable process if any are availabke (in priority order).

It does default to one 'cpu scheduler' per cpu thread, plus some i/o schedulers and maybe some dirty schedulers.