[erlang-questions] Understanding the scalability of Erlang
Sun Sep 22 15:43:21 CEST 2013
Erlang makes it easy to spread the workload across CPU cores on a single machine and spread the workload across many machines (distributed erlang over a network). Per machine you are of course limited to the CPU capabilities of that machine. Erlang does not break any laws of physics.
You can do all of that in other languages, but it will require a lot more work.
On Sep 22, 2013, at 3:18 PM, Melvyn Ferrao wrote:
> It is said that thousands of processes can be spawned to do the similar task concurrently and Erlang is good at handling it. If there is more work to be done, we can simply and safely add more worker processes and that makes it scalable.
> What I fail to understand is that if the work performed by each work is itself resource-intensive, how will Erlang be able to handle it? For instance, if entries are being made into a table by several sources and an Erlang application withing its hundreds of processes reads rows from the table and does something, this is obviously likely to cause resource burden. Every worker will try to pull a record from the table.
> If this is a bad example, consider a worker that has to perform a highly CPU-intensive computation in memory. Thousands of such workers running concurrently will overwork the CPU.
> Please rectify my understanding of the scalability in Erlang:
> Erlang processes get time slices of the CPU only if there is work available for them. OS processes on the other hand get time slices regardless of whether they are idle.
> The startup and shutdown time of Erlang processes is much lower than that of OS processes.
> Apart from the above two points is there something about Erlang that makes it scalable?
> erlang-questions mailing list
More information about the erlang-questions