What's the maximum size of Linux UDP receive buffer? I thought it's limited only by available RAM, but when I set
5GB for rmem_max:
echo 5000000000 > /proc/sys/net/core/rmem_max
and 4GB for the actual socket buffer (in Erlang):
gen_udp:listen(Port, [{recbuf, 4000000000}])
When I measure the buffer utilization, it shows:
# netstat -u6anp | grep 5050
udp6 1409995136 0 :::5050 :::* 13483/beam.smp
I can't exceed this 1.4GB. For smaller buffer sizes, like e.g. 500MB, actual buffer size matched the configured value. My system is Debian 6.0, the machine has 50GB RAM available.
getsockopt()
to see what value was actually allocated. I find it hard to believe you need 4GB to handle traffic peaks. Probably you should just read faster. – user207421