При использовании SO_RCVBUF
из 10485760 (что также является текущим пределом, предусмотренным sysctl
с net.core.rmem_max
настройка и отправка пакетов UDP быстрее, чем может обработать принимающая сторона, rx_queue
столбец в /proc/net/udp
всегда вырастает почти вдвое больше, чем SO_RCVBUF
. 20972544 было самым высоким значением, которое я мог наблюдать.
Так SO_RCVBUF не соблюдается? Или вывод / proc / net / udp неверен?
Моя система:
uname -a
Linux mybox 4.3.0-1-amd64 #1 SMP Debian 4.3.3-5 (2016-01-04) x86_64 GNU/Linux
Из розетка (7) страница руководства:
SO_RCVBUF Sets or gets the maximum socket receive buffer in bytes. The kernel doubles this value (to allow space for bookkeeping overhead) when it is set using setsockopt(2), and this doubled value is returned by getsockopt(2). The default value is set by the /proc/sys/net/core/rmem_default file, and the maximum allowed value is set by the /proc/sys/net/core/rmem_max file. The minimum (doubled) value for this option is 256.
Обратите внимание, что на странице руководства указано, что ядро удвоит указанное значение буфера для накладных расходов.