Minha caixa Linux está descartando pacotes UDP. Possui uma NIC 10GbeE 82599ES com ixgbe
driver.
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 os RcvbufErrors na máquina receptora aumentando /proc/net/snmp
loucamente. 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
Pelo que eu sei, a única maneira de obter RcvbufErrors sem quedas de UDP é sefiltro_skretorna -ENOMEM
emmeia_queue_recv_skb, o que acontece se a página do buffer do soquete for pfmemalloc
editada, o que por sua vez acontece se a máquina estiver sob pressão de memória.
O 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?! (Desde já, obrigado)
K