Thursday, March 26, 2009

Over the last couple of years, I’ve been getting more interested in Erlang as an high-scale services implementation language originally designed at Ericcson.  Back in May of last year I posted: Erlang and High-Scale System Software. 

 

The Erlang model of spawning many lightweight threads that communicate via message passing is typically less efficient than the more common shared memory and locks approach but the lightweight processes with message passing model but it is much easier to get a correct implementation using this model.  Erlang also encourages a “fail fast” programming model.  Years ago I became convinced that this design pattern is one of the best ways to get high scale systems software correct (Designing and Deploying Internet-Scale Services).   

Chris Newcombe of Amazon recently presented an excellent talk on Erlang at the Berkeley RAD Lab.  The first part of Chris’ Berkeley talk on Erlang is posted here: Erlang: Productivity and Performance (ChrisNewcombe_ErlangProductivityPerformance.pdf (298.21 KB)). The second half of Chris’ talk is posted at: http://ulf.wiger.net/weblog/wp-content/uploads/2009/01/damp09-erlang-multicore.pdf (unfortunately this link is down at the time of this posting). Update: Ulf Wiger offers a live URL for his excellent slides: http://www.cse.unsw.edu.au/~pls/damp09/damp09-wiger-keynote.pdf.

In this talk Chris gives an overview of Erlang, talks about some of the advantages of the language, and then goes through some of the performance strengths and weaknesses of Erlang.

 

                                                                --jrh

 

James Hamilton, Amazon Web Services

1200, 12th Ave. S., Seattle, WA, 98144
W:+1(425)703-9972 | C:+1(206)910-4692 | H:+1(206)201-1859 |
james@amazon.com  

H:mvdirona.com | W:mvdirona.com/jrh/work  | blog:http://perspectives.mvdirona.com

Thursday, March 26, 2009 6:42:25 AM (Pacific Standard Time, UTC-08:00)  #    Comments [3] - Trackback
Software
Friday, March 27, 2009 3:05:58 AM (Pacific Standard Time, UTC-08:00)
Another link to the DAMP '09 presentation is http://www.cse.unsw.edu.au/~pls/damp09/damp09-wiger-keynote.pdf

I'd say the lock-based approach is more efficient on small problems and few cores. With many cores, the cost of maintaing coordinating mutexes tends to become prohibitive. In complex systems, lock-based concurrency threatens to kill performance simply because it is so incredibly complicated - forcing programmers into coarse-grained locking and other workaround in order to stay sane.
Friday, March 27, 2009 5:46:48 PM (Pacific Standard Time, UTC-08:00)
Having spent 20 years with the lock-based approach implementing database management systems, I know you are correct Ulf. Its hard to get lock based implementations correct but, with investment, they perform very well. The challenge is that most software projects can't afford the engineering investments typically found on RDBMS implementation teams.

Thanks for the better URL to your slides.

--jrh
jrh@mvdirona.com
Friday, March 27, 2009 11:54:26 PM (Pacific Standard Time, UTC-08:00)
The problem with my blog has been fixed BTW, it was an IP address change that wasn't reflected in my DNS records for some reason. First time in three years that I've noticed it being down. Thanks for the heads-up. :)
Comments are closed.

Disclaimer: The opinions expressed here are my own and do not necessarily represent those of current or past employers.

Archive
<July 2014>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

Categories
This Blog
Member Login
All Content © 2014, James Hamilton
Theme created by Christoph De Baene / Modified 2007.10.28 by James Hamilton