[erlang-questions] performance numbers
Thu Nov 15 11:56:34 CET 2007
Recently I went out to hunt for a best machine to run Erlang
code. I did some prototyping and created a performance testing
suite which loosely simulates the load I'll be giving it.
Here are the numbers:
(Unfortunately, the numbers are in tabular form not really suitable
for email. Click on the link above to have a picture).
In short, I am surprized to see that my 650 MHz Sun machine
is TPS-competitive with four-cores (2x2) AMD 2.3 GHz. I am also
surprized to see that the best mode of compilation is non-smp,
non-hipe, non-native, single threaded code, unless the code involves
going out of VM to other systems (e.g., via TCP).
Some words about the testing. The "Lock" test executes the
lock/unlock code, which is basically a gen_server doing something
similar to what you can read in any Erlang book: the resource
locking code. Sequential version of it does lock/unlock in sequence,
and Parallel version just runs a bunch of processes (2, 4, 8, 10, 100),
which generate a series of lock/unlock requests.
TCP I/O is essentially stress-testing an Erlang library to memcached,
which is running on the same machine. Distinction between
Sequential and Parallel modes of execution are essentially the same
as with Lock code: Parallel is N processes doing a number of
requests to library which communicates to memcached, whereas
Sequential is Parallel with N=1. There were thousands of tests
for each table cell and the best numbers are retained for the table.
Is there anything specific you'd generally recommend to skew
these numbers in favor of AMD system? Or Xeon is really the
best choice if it comes to running Erlang code?
More information about the erlang-questions