All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Begunkov <asml.silence@gmail.com>
To: netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>, Wei Liu <wei.liu@kernel.org>,
	Paul Durrant <paul@xen.org>,
	Pavel Begunkov <asml.silence@gmail.com>
Subject: [RFC net-next 00/27] net and/or udp optimisations
Date: Sun,  3 Apr 2022 14:06:12 +0100	[thread overview]
Message-ID: <cover.1648981570.git.asml.silence@gmail.com> (raw)

A mix of various net optimisations, which were mostly discovered during UDP
testing. Benchmarked with an io_uring test using 16B UDP/IPv6 over dummy netdev:
2090K vs 2229K tx/s, +6.6%, or in a 4-8% range if not averaging across reboots.

1-3 removes extra atomics and barriers from sock_wfree() mainly benefitting UDP.
4-7 cleans up some zerocopy helpers
8-16 do inlining of ipv6 and generic net pathes
17 is a small nice performance improvement for TCP zerocopy
18-27 refactors UDP to shed some more overhead

Pavel Begunkov (27):
  sock: deduplicate ->sk_wmem_alloc check
  sock: optimise sock_def_write_space send refcounting
  sock: optimise sock_def_write_space barriers
  skbuff: drop zero check from skb_zcopy_set
  skbuff: drop null check from skb_zcopy
  net: xen: set zc flags only when there is ubuf
  skbuff: introduce skb_is_zcopy()
  skbuff: optimise alloc_skb_with_frags()
  net: inline sock_alloc_send_skb
  net: inline part of skb_csum_hwoffload_help
  net: inline skb_zerocopy_iter_dgram
  ipv6: inline ip6_local_out()
  ipv6: help __ip6_finish_output() inlining
  ipv6: refactor ip6_finish_output2()
  net: inline dev_queue_xmit()
  ipv6: partially inline fl6_update_dst()
  tcp: optimise skb_zerocopy_iter_stream()
  net: optimise ipcm6 cookie init
  udp/ipv6: refactor udpv6_sendmsg udplite checks
  udp/ipv6: move pending section of udpv6_sendmsg
  udp/ipv6: prioritise the ip6 path over ip4 checks
  udp/ipv6: optimise udpv6_sendmsg() daddr checks
  udp/ipv6: optimise out daddr reassignment
  udp/ipv6: clean up udpv6_sendmsg's saddr init
  ipv6: refactor opts push in __ip6_make_skb()
  ipv6: improve opt-less __ip6_make_skb()
  ipv6: clean up ip6_setup_cork

 drivers/net/xen-netback/interface.c |   3 +-
 include/linux/netdevice.h           |  27 ++++-
 include/linux/skbuff.h              | 102 +++++++++++++-----
 include/net/ipv6.h                  |  37 ++++---
 include/net/sock.h                  |  10 +-
 net/core/datagram.c                 |   2 -
 net/core/datagram.h                 |  15 ---
 net/core/dev.c                      |  28 ++---
 net/core/skbuff.c                   |  59 ++++-------
 net/core/sock.c                     |  50 +++++++--
 net/ipv4/ip_output.c                |  10 +-
 net/ipv4/tcp.c                      |   5 +-
 net/ipv6/datagram.c                 |   4 +-
 net/ipv6/exthdrs.c                  |  15 ++-
 net/ipv6/ip6_output.c               |  88 ++++++++--------
 net/ipv6/output_core.c              |  12 ---
 net/ipv6/raw.c                      |   8 +-
 net/ipv6/udp.c                      | 158 +++++++++++++---------------
 net/l2tp/l2tp_ip6.c                 |   8 +-
 19 files changed, 339 insertions(+), 302 deletions(-)
 delete mode 100644 net/core/datagram.h

-- 
2.35.1


             reply	other threads:[~2022-04-03 13:08 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-03 13:06 Pavel Begunkov [this message]
2022-04-03 13:06 ` [PATCH net-next 01/27] sock: deduplicate ->sk_wmem_alloc check Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 02/27] sock: optimise sock_def_write_space send refcounting Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 03/27] sock: optimise sock_def_write_space barriers Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 04/27] skbuff: drop zero check from skb_zcopy_set Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 05/27] skbuff: drop null check from skb_zcopy Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 06/27] net: xen: set zc flags only when there is ubuf Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 07/27] skbuff: introduce skb_is_zcopy() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 08/27] skbuff: optimise alloc_skb_with_frags() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 09/27] net: inline sock_alloc_send_skb Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 10/27] net: inline part of skb_csum_hwoffload_help Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 11/27] net: inline skb_zerocopy_iter_dgram Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 12/27] ipv6: inline ip6_local_out() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 13/27] ipv6: help __ip6_finish_output() inlining Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 14/27] ipv6: refactor ip6_finish_output2() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 15/27] net: inline dev_queue_xmit() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 16/27] ipv6: partially inline fl6_update_dst() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 17/27] tcp: optimise skb_zerocopy_iter_stream() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 18/27] net: optimise ipcm6 cookie init Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 19/27] udp/ipv6: refactor udpv6_sendmsg udplite checks Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 20/27] udp/ipv6: move pending section of udpv6_sendmsg Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 21/27] udp/ipv6: prioritise the ip6 path over ip4 checks Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 22/27] udp/ipv6: optimise udpv6_sendmsg() daddr checks Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 23/27] udp/ipv6: optimise out daddr reassignment Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 24/27] udp/ipv6: clean up udpv6_sendmsg's saddr init Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 25/27] ipv6: refactor opts push in __ip6_make_skb() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 26/27] ipv6: improve opt-less __ip6_make_skb() Pavel Begunkov
2022-04-03 13:06 ` [PATCH net-next 27/27] ipv6: clean up ip6_setup_cork Pavel Begunkov
2022-04-06  9:44 ` [RFC net-next 00/27] net and/or udp optimisations Eric Dumazet
2022-04-11 12:04   ` Pavel Begunkov

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=cover.1648981570.git.asml.silence@gmail.com \
    --to=asml.silence@gmail.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=paul@xen.org \
    --cc=wei.liu@kernel.org \
    /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.