Ulf Wiger <>
Sun Mar 23 22:01:50 CET 2003

On Sun, 23 Mar 2003, Chris Pressey wrote:

>Clearly one of the main reasons Ulf wrote mdisp was for
>performance (packing more processes into the runtime than
>would otherwise fit, leveraging ETS when it scales better
>than processes, etc;)

True. Although I don't quite recall who wrote the first
incarnation of mdisp. It would be Peter Lundell or Mats
Cronqvist. It could well have been Kurt Jonsson, but I
recall him being on holiday at the time. (:

Ola Samuelsson originally (1996) wrote a multi_fsm(*) -- a
version of gen_fsm that handled lots of gen_fsm instances in
the same process. Mdisp was the successor of that model. We
did actually discuss the mdisp model already back then, but
for various odd reasons, we didn't get around to
actually trying it out until years later.

The mdisp model has proven better in at least one respect:
With multiple FSMs sharing the same process, all operations
must be non-blocking (or at least never block for long).
This led to asynchronous programming, which is very
difficult to handle.

Inventing ways to "raise the ceiling" was a higher priority
before OTP R9, since Erlang "only" supported 32,000
simultaneous processes. Now, with support for 262,000
processes, mdisp has lost some of its original
justification. It may still be useful for other reasons (or
in cases where roughly 200,000 simultaneous processes is
still not enough. ;)


(*) If memory serves me, Ola also wrote the gen_fsm
behaviour, as well as the original 'gs'.

Ulf Wiger, Senior Specialist,
   / / /   Architecture & Design of Carrier-Class Software
  / / /    Strategic Product & System Management
 / / /     Ericsson AB, Connectivity and Control Nodes

More information about the erlang-questions mailing list