On Wed, Jun 29, 2011 at 17:55, Andrew Stuart (SuperCoders)
<andrew.stu...@supercoders.com.au> wrote:
> One of the primary supposed advantages of Erlang is its ability to
> parallelise.
>
> Has this promise been realised as a performance and scalability benefit in
> CouchDB?  Or has the promise turned out to be too impractical to realise in
> any major way.

Absolutely. It works out fabulously. There are some serialization
choke points along the write path, but reads are mostly free to be
executed entirely in parallel. With sufficiently fast disk(s) or
reading from hot, cached file pages I've seen good CPU utilization on
high-end multi-core and multi-cpu machines.

But beyond the parallelization of request handling there's concurrency
in the more general sense. The neat thing about Erlang, and why it has
its reputation, is that the CouchDB code can be liberal about its use
of concurrency at the code level without suffering from deadlocks or
other headaches that often plague programmers of complex,
multi-threaded shared memory systems. The Erlang team has taken care
of all the hard parts about sharing data in a concurrent environment.
As I understand it, the Erlang runtime's use of chipsets with many
hardware threads is only improving, and those benefits will be
automatically conferred upon CouchDB.

-Randall

Reply via email to