UDP RecvBufErrors из-за страниц pfmalloc на слабо загруженной машине

UDP RecvBufErrors из-за страниц pfmalloc на слабо загруженной машине

Мой linux box теряет UDP пакеты. Он имеет 10GbeE 82599ES NIC с ixgbeдрайвером.

Запуск ncдля получения пакетов типа этого:

$ nc -I 100000000 -l 2004 -u > /dev/null 

и отправка пакетов с другой машины с помощью:

$ cat /dev/zero | nc 10.5.10.248 2004 -u 

RcvbufErrors на принимающей машине /proc/net/snmpрастет как сумасшедший. Интересно, что /proc/net/udpне показывает потерянных пакетов. Моя версия ядра:

$ uname -a
Linux titan 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux

Насколько я могу судить, единственный способ получить RcvbufErrors без сбросов UDP — этоsk_filterвозвращается -ENOMEMвsock_queue_recv_skb, что происходит, если страница буфера сокета pfmemallocзаполнена, что, в свою очередь, происходит, если машина испытывает нехватку памяти.

Странно, что там freeнаписано, что места много:

$ free -m
total       used       free     shared    buffers     cached
Mem:         32210      32016        194        178        352      29948
-/+ buffers/cache:       1715      30495
Swap:        65467        162      65305

Помогите?! (Спасибо заранее)

К

Связанный контент