로드가 적은 시스템의 pfmalloc 페이지로 인한 UDP RecvBufError

로드가 적은 시스템의 pfmalloc 페이지로 인한 UDP RecvBufError

내 Linux 시스템이 UDP 패킷을 삭제하고 있습니다. 드라이버가 포함된 10GbeE 82599ES NIC가 있습니다 ixgbe.

다음과 같이 실행 nc하여 패킷을 수신합니다.

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

다른 컴퓨터에서 패킷을 보냅니다.

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

수신 시스템의 RcvbufError가 /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

내가 아는 한 UDP 삭제 없이 RcvbufError를 얻는 유일한 방법은 다음과 같습니다.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

돕다? ! (미리 감사드립니다)

케이

관련 정보