From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Abeni Subject: Re: [PATCH net-next] net: sock_rps_record_flow() is for connected sockets Date: Wed, 07 Dec 2016 08:57:08 +0100 Message-ID: <1481097428.5535.12.camel@redhat.com> References: <1480905784.18162.509.camel@edumazet-glaptop3.roam.corp.google.com> <1480944138.4694.37.camel@redhat.com> <1480948133.18162.527.camel@edumazet-glaptop3.roam.corp.google.com> <1480960639.18162.556.camel@edumazet-glaptop3.roam.corp.google.com> <1481020451.6225.38.camel@redhat.com> <1481044098.7129.7.camel@redhat.com> <1481046434.18162.599.camel@edumazet-glaptop3.roam.corp.google.com> <1481049061.7129.18.camel@redhat.com> <1481050715.18162.604.camel@edumazet-glaptop3.roam.corp.google.com> <1481051786.7129.22.camel@redhat.com> <1481052922.18162.605.camel@edumazet-glaptop3.roam.corp.google.com> <1481081570.18162.626.camel@edumazet-glaptop3.roam.corp.google.com> <1481093247.18162.637.camel@edumazet-glaptop3.roam.corp.google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: David Miller , netdev , Willem de Bruijn , Tom Herbert To: Eric Dumazet Return-path: Received: from mx1.redhat.com ([209.132.183.28]:53280 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752784AbcLGH5N (ORCPT ); Wed, 7 Dec 2016 02:57:13 -0500 In-Reply-To: <1481093247.18162.637.camel@edumazet-glaptop3.roam.corp.google.com> Sender: netdev-owner@vger.kernel.org List-ID: On Tue, 2016-12-06 at 22:47 -0800, Eric Dumazet wrote: > On Tue, 2016-12-06 at 19:32 -0800, Eric Dumazet wrote: > > A follow up patch will provide a static_key (Jump Label) since most > > hosts do not even use RFS. > > Speaking of static_key, it appears we now have GRO on UDP, and this > consumes a considerable amount of cpu cycles. > > Turning off GRO allows me to get +20 % more packets on my single UDP > socket. (1.2 Mpps instead of 1.0 Mpps) I see also an improvement for single flow tests disabling GRO, but on a smaller scale (~5% if I recall correctly). > Surely udp_gro_receive() should be bypassed if no UDP socket has > registered a udp_sk(sk)->gro_receive handler > > And/or delay the inet_add_offload(&udpv{4|6}_offload, IPPROTO_UDP); to > the first UDP sockets setting udp_sk(sk)->gro_receive handler, > ie udp_encap_enable() and udpv6_encap_enable() I had some patches adding explicit static keys for udp_gro_receive, but they were ugly and I did not get that much gain (I measured ~1-2% skipping udp_gro_receive only). I can try to refresh them anyway. We have some experimental patches to implement GRO for plain UDP connected sockets, using frag_list to preserve the individual skb len, and deliver the packet to user space individually. With that I got ~3mpps with a single queue/user space sink - before the recent udp improvements. I would like to present these patches on netdev soon (no sooner than next week, anyway). Cheers, Paolo