• Eric Dumazet's avatar
    udp: enable busy polling for all sockets · e68b6e50
    Eric Dumazet authored
    UDP busy polling is restricted to connected UDP sockets.
    
    This is because sk_busy_loop() only takes care of one NAPI context.
    
    There are cases where it could be extended.
    
    1) Some hosts receive traffic on a single NIC, with one RX queue.
    
    2) Some applications use SO_REUSEPORT and associated BPF filter
       to split the incoming traffic on one UDP socket per RX
    queue/thread/cpu
    
    3) Some UDP sockets are used to send/receive traffic for one flow, but
    they do not bother with connect()
    
    This patch records the napi_id of first received skb, giving more
    reach to busy polling.
    
    Tested:
    
    lpaa23:~# echo 70 >/proc/sys/net/core/busy_read
    lpaa24:~# echo 70 >/proc/sys/net/core/busy_read
    
    lpaa23:~# for f in `seq 1 10`; do ./super_netperf 1 -H lpaa24 -t UDP_RR -l 5; done
    
    Before patch :
       27867   28870   37324   41060   41215
       36764   36838   44455   41282   43843
    After patch :
       73920   73213   70147   74845   71697
       68315   68028   75219   70082   73707
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e68b6e50
udp.c 66.1 KB