Latency and throughput
Wed Jul 26 00:22:54 CEST 2006
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 . 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."
P.S. Yes, I know I will have to build on top of a cluster!
More information about the erlang-questions