On Fri, 2016-11-04 at 11:28 +0100, Paolo Abeni wrote: > A new argument is added to __skb_recv_datagram to provide > an explicit skb destructor, invoked under the receive queue > lock. > The UDP protocol uses such argument to perform memory > reclaiming on dequeue, so that the UDP protocol does not > set anymore skb->desctructor. > Instead explicit memory reclaiming is performed at close() time and > when skbs are removed from the receive queue. > The in kernel UDP protocol users now need to call a > skb_recv_udp() variant instead of skb_recv_datagram() to > properly perform memory accounting on dequeue. > > Overall, this allows acquiring only once the receive queue > lock on dequeue. > > 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 sinks vanilla patched > 1 440 560 > 3 2150 2300 > 6 3650 3800 > 9 4450 4600 > 12 6250 6450 > > v1 -> v2: > - do rmem and allocated memory scheduling under the receive lock > - do bulk scheduling in first_packet_length() and in udp_destruct_sock() > - avoid the typdef for the dequeue callback > > Suggested-by: Eric Dumazet <edumazet@xxxxxxxxxx> > Acked-by: Hannes Frederic Sowa <hannes@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx> > --- > @Eric, please add your signed off by when you feel comfortable with the patch > as you authored some of the code SGTM, thanks Paolo and Hannes ! Acked-by: Eric Dumazet <edumazet@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html