Open ManApart opened 4 years ago
On many linux distros there are sysctl changes which we can make to increase the size of this buffer. This will also need to be done likely on the nodes themselves. Unfortunately our containers run on alpine which does not expose these settings so if merely adding them as keys to sysctl does not work, we might want to look at running on a container OS which is more obviously tunable.
buffer size is a configurable setting of a gen_udp
socket already natively in erlang. i didn't expose this on the first pass because there was a lot of judgement around the idea of "buffering into the socket"
Yea, I think we'll likely want to tune both the properties around the network layer and the Application layer of the OSI model to reach maximum performance.
we should focus on writer speed/parallelism as relying entirely on increasing buffer size feels like a brittle bandaid. However, when we do OS-level tuning we can take into account that the UDP receive socket should be running in an operator that can provision the necessary network port so it can also use a more optimized container image
Receive can handle around 1,000 small UDP messages a second before encountering a large percentage of messages dropped. More messages than that per second drastically increases message drop.
AC
Tech Notes
Data
More notes here