Какой максимальный размер буфера приема UDP Linux? Я думал, что она ограничена только объемом доступной памяти, но когда я установилLinux UDP Максимальный размер принимаемого буфера
5GB для rmem_max:
echo 5000000000 > /proc/sys/net/core/rmem_max
и 4 Гб для фактического буфера сокета (в Erlang):
gen_udp:listen(Port, [{recbuf, 4000000000}])
Когда я измеряю использование буфера, оно показывает:
# netstat -u6anp | grep 5050
udp6 1409995136 0 :::5050 :::* 13483/beam.smp
Я не могу превышать этот 1,4 ГБ. Для меньших размеров буфера, например, 500 МБ, фактический размер буфера соответствует настроенному значению. Моя система - Debian 6.0, на компьютере имеется 50 ГБ оперативной памяти.
Где он говорит, что он ограничен только доступной оперативной памятью? И почему, по-вашему, вам нужен 4-гигабайтный буфер? – EJP
Это не так. Он не говорит, что он ограничен любым другим способом. Мне нужен такой буфер, чтобы избежать потери данных при более длительном просмотре сетевого трафика. –
Напротив. В нем говорится, что ядро может настроить значение, которое вы добавляете вверх или вниз, и советует вам вызвать 'getsockopt()', чтобы узнать, какое значение было фактически выделено. Мне трудно поверить, что вам нужно 4 ГБ для обработки пиков трафика. Наверное, вы должны просто читать быстрее. – EJP