From: Pavel Begunkov <asml.silence@gmail.com>
To: io-uring@vger.kernel.org, netdev@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>,
asml.silence@gmail.com, "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
David Ahern <dsahern@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Subject: [RFC 0/6] implement io_uring notification (ubuf_info) stacking
Date: Fri, 12 Apr 2024 13:55:21 +0100 [thread overview]
Message-ID: <cover.1712923998.git.asml.silence@gmail.com> (raw)
io_uring allocates a ubuf_info per zerocopy send request, it's convenient
for the userspace but with how things are it means that every time the
TCP stack has to allocate a new skb instead of amending into a previous
one. Unless sends are big enough, there will be lots of small skbs
straining the stack and dipping performance.
The patchset implements notification, i.e. an io_uring's ubuf_info
extension, stacking. It tries to link ubuf_info's into a list, and
the entire link will be put down together once all references are
gone.
Testing with liburing/examples/send-zerocopy and another custom made
tool, with 4K bytes per send it improves performance ~6 times and
levels it with MSG_ZEROCOPY. Without the patchset it requires much
larger sends to utilise all potential.
bytes | before | after (Kqps)
100 | 283 | 936
1200 | 195 | 1023
4000 | 193 | 1386
8000 | 154 | 1058
Pavel Begunkov (6):
net: extend ubuf_info callback to ops structure
net: add callback for setting a ubuf_info to skb
io_uring/notif: refactor io_tx_ubuf_complete()
io_uring/notif: remove ctx var from io_notif_tw_complete
io_uring/notif: simplify io_notif_flush()
io_uring/notif: implement notification stacking
drivers/net/tap.c | 2 +-
drivers/net/tun.c | 2 +-
drivers/vhost/net.c | 8 +++-
include/linux/skbuff.h | 21 ++++++----
io_uring/notif.c | 91 +++++++++++++++++++++++++++++++++++-------
io_uring/notif.h | 13 +++---
net/core/skbuff.c | 37 +++++++++++------
7 files changed, 129 insertions(+), 45 deletions(-)
--
2.44.0
next reply other threads:[~2024-04-12 12:55 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-12 12:55 Pavel Begunkov [this message]
2024-04-12 12:55 ` [RFC 1/6] net: extend ubuf_info callback to ops structure Pavel Begunkov
2024-04-13 17:17 ` David Ahern
2024-04-14 17:07 ` Willem de Bruijn
2024-04-15 0:07 ` Pavel Begunkov
2024-04-15 15:06 ` Willem de Bruijn
2024-04-15 18:55 ` Pavel Begunkov
2024-04-15 19:01 ` Willem de Bruijn
2024-04-16 14:50 ` David Ahern
2024-04-16 15:31 ` Pavel Begunkov
2024-04-12 12:55 ` [RFC 2/6] net: add callback for setting a ubuf_info to skb Pavel Begunkov
2024-04-13 17:18 ` David Ahern
2024-04-12 12:55 ` [RFC 3/6] io_uring/notif: refactor io_tx_ubuf_complete() Pavel Begunkov
2024-04-12 12:55 ` [RFC 4/6] io_uring/notif: remove ctx var from io_notif_tw_complete Pavel Begunkov
2024-04-12 12:55 ` [RFC 5/6] io_uring/notif: simplify io_notif_flush() Pavel Begunkov
2024-04-12 12:55 ` [RFC 6/6] io_uring/notif: implement notification stacking Pavel Begunkov
2024-04-14 17:10 ` Willem de Bruijn
2024-04-14 23:55 ` Pavel Begunkov
2024-04-15 15:15 ` Willem de Bruijn
2024-04-15 18:51 ` Pavel Begunkov
2024-04-15 19:02 ` Willem de Bruijn
2024-04-12 13:44 ` [RFC 0/6] implement io_uring notification (ubuf_info) stacking Jens Axboe
2024-04-12 14:52 ` Jens Axboe
2024-04-13 17:17 ` David Ahern
2024-04-15 0:08 ` 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.1712923998.git.asml.silence@gmail.com \
--to=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=io-uring@vger.kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=willemdebruijn.kernel@gmail.com \
/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.