[erlang-questions] Erlang internal scheduler implementation
Wed Jul 21 14:53:09 CEST 2010
It is true that some things have changed, but only
a few. :)
explains how each scheduler thread in an SMP system
works essentially like the old non-SMP scheduler, but
as the scheduler threads themselves are preemptively
scheduled, the strict priorities high and max are not
blocking in quite the same way as before.
A few additional comments, perhaps...
- Rickard wrote in the above post that the 'max'
priority level is undocumented. This is not true (anymore).
Scheduling is documented to some degree in the erlang
man page under process_flag(priority, Level).
- The latest versions of OTP implement process migration
between schedulers to prevent schedulers from running
out of work (if they do, they will busy-loop for a while
in order to avoid having to suspend and wake up the OS
thread unnecessarily). The AFAICT wholly undocumented
process_flag(scheduler, No) binds a process to a specific
scheduler so that it cannot be migrated, presumably to
allow for process affinity.
...or at least that's what I imagine that it ought to be
doing. The value cannot be inspected, and at first sight,
I couldn't find a way to 'unbind' a process again, so
perhaps we should just ignore this facility for now? :)
- A process is punished with extra reductions if it sends
a message to a process with a very long message queue.
This is possibly undesirable in a manycore system, since
it is tricky to implement without risking contention.
Michal Ptaszek wrote:
> Hi All,
> is there any kind of detailed documentation
> (except the comments in the source code) on
> behaviour/conception/strategy for Erlang
> process scheduler?
> How the processes are given CPU time, when they
> are pre-empted, can we and why do we migrate
> processes between different scheduler queues?
> I've already found Ulf Wiger's explanation
> in the mailing list archive:
> Nevertheless, this email is 9 years old so probably
> a lot of things changed (e.g. better SMP
> Best regards,
> Michal Ptaszek
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:
CTO, Erlang Solutions Ltd, formerly Erlang Training & Consulting Ltd
More information about the erlang-questions