linux/net/sunrpc
Paolo Abeni 850cbaddb5 udp: use it's own memory accounting schema
Completely avoid default sock memory accounting and replace it
with udp-specific accounting.

Since the new memory accounting model encapsulates completely
the required locking, remove the socket lock on both enqueue and
dequeue, and avoid using the backlog on enqueue.

Be sure to clean-up rx queue memory on socket destruction, using
udp its own sk_destruct.

Tested using pktgen with random src port, 64 bytes packet,
wire-speed on a 10G link as sender and udp_sink as the receiver,
using an l4 tuple rxhash to stress the contention, and one or more
udp_sink instances with reuseport.

nr readers      Kpps (vanilla)  Kpps (patched)
1               170             440
3               1250            2150
6               3000            3650
9               4200            4450
12              5700            6250

v4 -> v5:
  - avoid unneeded test in first_packet_length

v3 -> v4:
  - remove useless sk_rcvqueues_full() call

v2 -> v3:
  - do not set the now unsed backlog_rcv callback

v1 -> v2:
  - add memory pressure support
  - fixed dropwatch accounting for ipv6

Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-10-22 17:05:05 -04:00
..
auth_gss NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
xprtrdma NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
addr.c
auth.c sunrpc: replace generic auth_cred hash with auth-specific function 2016-09-30 15:47:47 -04:00
auth_generic.c NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
auth_null.c
auth_unix.c NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
backchannel_rqst.c
cache.c
clnt.c
debugfs.c
Kconfig
Makefile
netns.h
rpc_pipe.c fs: Replace CURRENT_TIME with current_time() for inode timestamps 2016-09-27 21:06:21 -04:00
rpcb_clnt.c
sched.c
socklib.c
stats.c
sunrpc.h
sunrpc_syms.c
svc.c
svc_xprt.c
svcauth.c
svcauth_unix.c cred: simpler, 1D supplementary groups 2016-10-07 18:46:30 -07:00
svcsock.c udp: use it's own memory accounting schema 2016-10-22 17:05:05 -04:00
sysctl.c
timer.c
xdr.c
xprt.c
xprtmultipath.c
xprtsock.c udp: use it's own memory accounting schema 2016-10-22 17:05:05 -04:00