[erlang-questions] Heavy duty UDP server performance

Sean Cribbs <>
Wed Feb 3 19:24:40 CET 2016


This difference (batching improves performance) is interesting to me
because it reminds me of a problem we had where many small writes to
gen_tcp slogged performance, whereas batching them to something closer to
MTU or TCP buffer size greatly improved throughput. Calling into the driver
added ~30ms when sending tiny messages, even with Nagle off.

I'm curious, did you try gen_udp with the {active, N} option, or were they
already running in {active, true} mode?

On Wed, Feb 3, 2016 at 10:23 AM, Max Lapshin <> wrote:

> When we use plain gen_udp to accept 200-400 mbit of incoming MPEG-TS
> traffic in flussonic, we use about 50% of moderate 4 core xeon e3 server.
>
> When we switch to our driver implementation of udp that collapses several
> contiguous udp messages into single big message (it is allowed for mpegts)
> we reduce usage to 15-20%
>
> I can't tell that it is "badly written udp in erlang", just messaging is
> rather expensive.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160203/3b4b5904/attachment.html>


More information about the erlang-questions mailing list