rx_queue em / proc / net / udp aumenta para o dobro do valor SO_RCVBUF

1

Ao usar um SO_RCVBUF de 10485760 (que também é o limite atual estipulado pela configuração sysctl do net.core.rmem_max , e enviar pacotes UDP mais rápido do que o receptor pode manipular, a coluna rx_queue em /proc/net/udp sempre cresce quase exatamente o dobro do tamanho de SO_RCVBUF . 20972544 foi o valor mais alto que pude observar.

Então o SO_RCVBUF não está sendo aderido ? Ou a saída de / proc / net / udp está errada?

Meu sistema:

uname -a
Linux mybox 4.3.0-1-amd64 #1 SMP Debian 4.3.3-5 (2016-01-04) x86_64 GNU/Linux
    
por Eugene Beresovsky 22.02.2016 / 10:09

1 resposta

2

Na página de manual do socket (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.

Note que a página man indica que o kernel dobrará o valor do buffer especificado para a sobrecarga da escrituração contábil.

    
por 11.05.2017 / 18:23