Minha caixa de linux está descartando pacotes UDP. Ele tem uma NIC 10GbeE 82599ES com driver ixgbe
.
Executando nc
para receber pacotes como este:
$ nc -I 100000000 -l 2004 -u > /dev/null
e enviando pacotes de uma máquina diferente com:
$ cat /dev/zero | nc 10.5.10.248 2004 -u
tem o RcvbufErrors na máquina receptora em /proc/net/snmp
aumentando como louco. Curiosamente, /proc/net/udp
não mostra pacotes descartados.
Minha versão do kernel é:
$ uname -a
Linux titan 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
Tanto quanto eu posso dizer, a única maneira de obter RcvbufErrors sem UDP cai é se sk_filter retorna -ENOMEM
em sock_queue_recv_skb , o que acontece se a página do buffer de soquete for pfmemalloc
ed, o que, por sua vez, acontece se a máquina estiver sob pressão de memória.
O mais estranho é que free
diz que há muito espaço:
$ free -m
total used free shared buffers cached
Mem: 32210 32016 194 178 352 29948
-/+ buffers/cache: 1715 30495
Swap: 65467 162 65305
Ajuda ?! (Agradecemos antecipadamente)
K
Tags linux-kernel