All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Richard Gobert <richardbgobert@gmail.com>,
	 davem@davemloft.net,  edumazet@google.com,  kuba@kernel.org,
	 pabeni@redhat.com,  willemdebruijn.kernel@gmail.com,
	 dsahern@kernel.org,  xeb@mail.ru,  shuah@kernel.org,
	 idosch@nvidia.com,  amcohen@nvidia.com,  petrm@nvidia.com,
	 jbenc@redhat.com,  bpoirier@nvidia.com,  b.galvani@gmail.com,
	 liujian56@huawei.com,  horms@kernel.org,
	 linyunsheng@huawei.com,  richardbgobert@gmail.com,
	 therbert@google.com,  netdev@vger.kernel.org,
	 linux-kernel@vger.kernel.org,  linux-kselftest@vger.kernel.org
Subject: Re: [PATCH net-next v4 4/4] net: gro: move L3 flush checks to tcp_gro_receive
Date: Mon, 25 Mar 2024 14:53:36 -0400	[thread overview]
Message-ID: <6601c830c1daa_11c6072943b@willemb.c.googlers.com.notmuch> (raw)
In-Reply-To: <20240325182543.87683-5-richardbgobert@gmail.com>

Richard Gobert wrote:
> {inet,ipv6}_gro_receive functions perform flush checks (ttl, flags,
> iph->id, ...) against all packets in a loop. These flush checks are used
> currently only in tcp flows in GRO.
> 
> These checks need to be done only once in tcp_gro_receive and only against
> the found p skb, since they only affect flush and not same_flow.
> 
> Levaraging the previous commit in the series, in which correct network
> header offsets are saved for both outer and inner network headers -
> allowing these checks to be done only once, in tcp_gro_receive. As a
> result, NAPI_GRO_CB(p)->flush is not used at all. In addition - flush_id
> checks are more declarative and contained in inet_gro_flush, thus removing
> the need for flush_id in napi_gro_cb.
> 
> This results in less parsing code for UDP flows and non-loop flush tests
> for TCP flows.
> 
> For example, running 40 IP/UDP netperf connections:
> ./super_netperf.sh 40 -H 1.1.1.2 -t UDP_STREAM -l 120
> 
> Running perf top for 90s we can see that relatively less time is spent
> on inet_gro_receive when GRO is not coalescing UDP:
> 
> net-next:
>    1.26%  [kernel]  [k] inet_gro_receive
> 
> patch applied:
>    0.85%  [kernel]  [k] inet_gro_receive
> 
> udpgro_bench.sh single connection GRO improvement:
> net-next:
>    0.76%  [kernel]  [k] inet_gro_receive
> 
> patch applied:
>    0.61%  [kernel]  [k] inet_gro_receive
> 
> Signed-off-by: Richard Gobert <richardbgobert@gmail.com>

In v3 we discussed how the flush on network layer differences (like
TTL or ToS) currently only affect the TCP GRO path, but should apply
more broadly.

We agreed that it is fine to leave that to a separate patch series.

But seeing this patch, it introduces a lot of churn, but also makes
it harder to address that issue for UDP, as it now moves network
layer checks directly to the TCP code.

  reply	other threads:[~2024-03-25 18:53 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-25 18:25 [PATCH net-next v4 0/4] net: gro: encapsulation bug fix and flush checks improvements Richard Gobert
2024-03-25 18:25 ` [PATCH net-next v4 1/4] net: gro: add p_off param in *_gro_complete Richard Gobert
2024-03-25 18:25 ` [PATCH net-next v4 2/4] selftests/net: add local address bind in vxlan selftest Richard Gobert
2024-03-25 18:25 ` [PATCH net-next v4 3/4] net: gro: add {inner_}network_offset to napi_gro_cb Richard Gobert
2024-03-25 18:25 ` [PATCH net-next v4 4/4] net: gro: move L3 flush checks to tcp_gro_receive Richard Gobert
2024-03-25 18:53   ` Willem de Bruijn [this message]
2024-03-26 12:35     ` Richard Gobert
2024-03-26 13:40       ` Willem de Bruijn
2024-03-26 14:09         ` Richard Gobert
2024-03-26  2:33   ` Jakub Kicinski
2024-03-26 14:14   ` Eric Dumazet
2024-03-26 14:43     ` Richard Gobert
2024-03-26 14:46       ` Eric Dumazet
2024-03-26 15:02         ` Richard Gobert
2024-03-26 15:10           ` Willem de Bruijn
2024-03-26 15:26             ` Richard Gobert
2024-03-26 16:14           ` Paolo Abeni
2024-03-26 17:25             ` Richard Gobert
2024-03-26 18:29               ` Paolo Abeni
2024-03-27 16:07                 ` Richard Gobert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6601c830c1daa_11c6072943b@willemb.c.googlers.com.notmuch \
    --to=willemdebruijn.kernel@gmail.com \
    --cc=amcohen@nvidia.com \
    --cc=b.galvani@gmail.com \
    --cc=bpoirier@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=dsahern@kernel.org \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=idosch@nvidia.com \
    --cc=jbenc@redhat.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linyunsheng@huawei.com \
    --cc=liujian56@huawei.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=petrm@nvidia.com \
    --cc=richardbgobert@gmail.com \
    --cc=shuah@kernel.org \
    --cc=therbert@google.com \
    --cc=xeb@mail.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.