Network benchmark

Luke Gorrie luke@REDACTED
Fri Dec 12 16:23:55 CET 2003


Sean Hinde <sean.hinde@REDACTED> writes:

> We have a HTTP proxy here which will happily stream 50Mbits/sec
> through the erlang node - all traffic coming in and out of the same
> 100BaseT interface (this was on my 1GHz Powerbook).

[...]

> Recently Luke mentioned doing some profiling of the whole system doing
> something similar - I wonder how he got on - Luke?

I haven't done anything more, but we have had Erlang merrily pushing
through ~100Mbps of ethernet frames on PC hardware. It was proxying
between a Linux 'tap' ethernet interface and a UDP socket, and not
doing any decoding of the packets at all. IIRC it was a 2.4Ghz CPU and
the CPU cost was about one percent per megabit - seemed to scale
linearly and used the whole CPU to push ~100Mbps.

In that benchmark the data was originating locally on the machine,
coming in the tap interface, then being sent through UDP over a real
network. The total load on the box would presumably be somewhat higher
if we were proxying between two real networks, due to the extra work
for the kernel.

Profiler-wise, IIRC about ~60% of the time was spent in kernel space,
and from 'strace' Erlang seemed to be doing reasonable system calls,
so I was pretty happy with Erlang's overall performance.

>From Hal's report it's exciting to think you could have high
throughput while actually bit-syntax hacking the packets as they went
through!

-Luke




More information about the erlang-questions mailing list