Latency and throughput

Joel Reymont <>
Wed Jul 26 00:22:54 CEST 2006


Folks,

Can you build low-latency network servers with Erlang? Has anyone  
done it? Doing it?

I'm thinking of building an Order Management System (OMS) in Erlang  
for trade routing to exchanges. Very high performance and low latency  
are, of course, a requirement.

My alternatives are OCaml and Ensemble [1]. OCaml is already proven  
in this area from what I know, i.e. can capture and store thousands  
of ticks/trades per second. From the Ensemble overview:

"By moving to ML, we have made it possible to use formal verification  
tools to prove the correctness of critical Horus protocols and  
algorithms. The ML version of the system is also amenable to semi- 
automated protocol optimizations, which have slashed overhead and  
latency for heavily used protocols: latency is as low as 75us on ATM,  
and throughput as high as 80,000 multicasts per second."

Please note the latency and throughput numbers in the last sentence  
above. Also from the Ensemble FAQ (general section):

"Distributed communication in ML!?!? It must be slow....

Actually, it isn't. With specially optimized protocols, Ensemble can  
be around 10% slower than raw UDP socket communication. (The version  
distributed contains these protocols, but they are not used by  
default.) With these protocols in use, the performance of Ensemble is  
comparable to other group communication systems written in C -- and  
faster than most. The use of ML has helped us evolve the system so  
that in the normal case Ensemble costs very little."

	Thanks, Joel

P.S. Yes, I know I will have to build on top of a cluster!

[1] http://dsl.cs.technion.ac.il/projects/Ensemble/

--
http://wagerlabs.com/








More information about the erlang-questions mailing list