UDP RecvBufErrors aufgrund von pfmalloc-Seiten in einer leicht ausgelasteten Maschine

UDP RecvBufErrors aufgrund von pfmalloc-Seiten in einer leicht ausgelasteten Maschine

Meine Linux-Box verliert UDP-Pakete. Sie verfügt über eine 10GbeE 82599ES-Netzwerkkarte mit ixgbeTreiber.

Wird ausgeführt nc, um Pakete wie dieses zu empfangen:

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

und Senden von Paketen von einem anderen Computer mit:

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

Die RcvbufErrors auf der empfangenden Maschine nehmen /proc/net/snmprasend schnell zu. Interessanterweise /proc/net/udpwerden keine verlorenen Pakete angezeigt. Meine Kernelversion ist:

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

Soweit ich das beurteilen kann, besteht die einzige Möglichkeit, RcvbufErrors ohne UDP-Drops zu erhalten, darin,sk_filterkehrt zurück -ENOMEMinsock_queue_recv_skb, was passiert, wenn die Socket-Pufferseite pfmemallocbearbeitet wird, was wiederum passiert, wenn der Speicher der Maschine nicht ausreicht.

Das Merkwürdige ist, dass freedort steht, es sei jede Menge Platz vorhanden:

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

Hilfe?! (Danke im Voraus)

K

verwandte Informationen