RecvBufErrors UDP devido a páginas pfmalloc em máquinas carregadas

1

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

    
por freddofrog 18.04.2017 / 08:47

0 respostas