Most of Erlang's goodness evolved before SMP was available. IIRC, Erlang didn't support smp before its R11 release. Before then if we wanted to light up all the cores on a box, we'd fire up multiple nodes on a machine and use Erlang's distributed messaging.
Here are some benefits to single core erlang, off the top of my head.
* Erlang's VM is phenomenal at handling concurrent I/O even on a single core. Free epoll/kqueue backed async i/o and iovec ops.
* Built-in distribution, node/process monitoring, code hot-loading, mature tools and introspective capabilities on runtime state/performance.
* Some degree of "free" scale when a company is ready to deploy that app on a machine that has more cores.
I'm not sure what you mean by requires a lot of RAM up front -- compared to C/C++, yes.. but, relative to ruby, python, or the JVM? That's not been my experience.
Here are some benefits to single core erlang, off the top of my head.
* Erlang's VM is phenomenal at handling concurrent I/O even on a single core. Free epoll/kqueue backed async i/o and iovec ops.
* OTP, applications, supervision trees, state encapsulation, fault isolation, cheap GC.
* Built-in distribution, node/process monitoring, code hot-loading, mature tools and introspective capabilities on runtime state/performance.
* Some degree of "free" scale when a company is ready to deploy that app on a machine that has more cores.
I'm not sure what you mean by requires a lot of RAM up front -- compared to C/C++, yes.. but, relative to ruby, python, or the JVM? That's not been my experience.