From: Jakub Kicinski <kuba@kernel.org>
To: Mina Almasry <almasrymina@google.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, linux-alpha@vger.kernel.org,
linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org,
sparclinux@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
linux-arch@vger.kernel.org, bpf@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-media@vger.kernel.org,
dri-devel@lists.freedesktop.org,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Ivan Kokshaysky" <ink@jurassic.park.msu.ru>,
"Matt Turner" <mattst88@gmail.com>,
"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
"Helge Deller" <deller@gmx.de>,
"Andreas Larsson" <andreas@gaisler.com>,
"Jesper Dangaard Brouer" <hawk@kernel.org>,
"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Masami Hiramatsu" <mhiramat@kernel.org>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Martin KaFai Lau" <martin.lau@linux.dev>,
"Eduard Zingerman" <eddyz87@gmail.com>,
"Song Liu" <song@kernel.org>,
"Yonghong Song" <yonghong.song@linux.dev>,
"John Fastabend" <john.fastabend@gmail.com>,
"KP Singh" <kpsingh@kernel.org>,
"Stanislav Fomichev" <sdf@google.com>,
"Hao Luo" <haoluo@google.com>, "Jiri Olsa" <jolsa@kernel.org>,
"David Ahern" <dsahern@kernel.org>,
"Willem de Bruijn" <willemdebruijn.kernel@gmail.com>,
"Shuah Khan" <shuah@kernel.org>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Pavel Begunkov" <asml.silence@gmail.com>,
"David Wei" <dw@davidwei.uk>, "Jason Gunthorpe" <jgg@ziepe.ca>,
"Yunsheng Lin" <linyunsheng@huawei.com>,
"Shailend Chand" <shailend@google.com>,
"Harshitha Ramamurthy" <hramamurthy@google.com>,
"Shakeel Butt" <shakeelb@google.com>,
"Jeroen de Borst" <jeroendb@google.com>,
"Praveen Kaligineedi" <pkaligineedi@google.com>
Subject: Re: [RFC PATCH net-next v6 14/15] net: add devmem TCP documentation
Date: Thu, 7 Mar 2024 17:52:51 -0800 [thread overview]
Message-ID: <20240307175251.309837e1@kernel.org> (raw)
In-Reply-To: <20240305020153.2787423-15-almasrymina@google.com>
On Mon, 4 Mar 2024 18:01:49 -0800 Mina Almasry wrote:
> +Intro
> +=====
> +
> +Device memory TCP (devmem TCP) enables receiving data directly into device
> +memory (dmabuf). The feature is currently implemented for TCP sockets.
> +
> +
> +Opportunity
> +-----------
> +
> +A large amount of data transfers have device memory as the source and/or
s/amount/number/
> +destination. Accelerators drastically increased the volume of such transfers.
s/volume/prevalence/
> +Some examples include:
> +
> +- Distributed training, where ML accelerators, such as GPUs on different hosts,
> + exchange data among them.
s/among them//
> +- Distributed raw block storage applications transfer large amounts of data with
> + remote SSDs, much of this data does not require host processing.
> +
> +Today, the majority of the Device-to-Device data transfers the network are
"Today" won't age well.
> +implemented as the following low level operations: Device-to-Host copy,
> +Host-to-Host network transfer, and Host-to-Device copy.
> +
> +The implementation is suboptimal, especially for bulk data transfers, and can
/The implementation/The flow involving host copies/
> +put significant strains on system resources such as host memory bandwidth and
> +PCIe bandwidth.
> +
> +Devmem TCP optimizes this use case by implementing socket APIs that enable
> +the user to receive incoming network packets directly into device memory.
> +More Info
> +---------
> +
> + slides, video
> + https://netdevconf.org/0x17/sessions/talk/device-memory-tcp.html
> +
> + patchset
> + [RFC PATCH v3 00/12] Device Memory TCP
> + https://lore.kernel.org/lkml/20231106024413.2801438-1-almasrymina@google.com/T/
Won't age well? :)
> +Interface
> +=========
> +
> +Example
> +-------
> +
> +tools/testing/selftests/net/ncdevmem.c:do_server shows an example of setting up
> +the RX path of this API.
> +
> +NIC Setup
> +---------
> +
> +Header split, flow steering, & RSS are required features for devmem TCP.
> +
> +Header split is used to split incoming packets into a header buffer in host
> +memory, and a payload buffer in device memory.
> +
> +Flow steering & RSS are used to ensure that only flows targeting devmem land on
> +RX queue bound to devmem.
> +
> +Enable header split & flow steering:
> +
> +::
You can put the :: at the end of the text, IIRC, like this:
Enable header split & flow steering::
> +
> + # enable header split (assuming priv-flag)
> + ethtool --set-priv-flags eth1 enable-header-split on
Olek added the "set" in commit 50d73710715d ("ethtool: add SET for
TCP_DATA_SPLIT ringparam"), no need for the priv flag any more.
next prev parent reply other threads:[~2024-03-08 1:52 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-05 2:01 [RFC PATCH net-next v6 00/15] Device Memory TCP Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 01/15] queue_api: define queue api Mina Almasry
2024-03-08 1:30 ` Jakub Kicinski
2024-03-08 2:08 ` Mina Almasry
2024-03-08 3:36 ` Jakub Kicinski
2024-03-08 23:47 ` David Wei
2024-03-09 0:27 ` Mina Almasry
2024-03-11 1:12 ` David Ahern
2024-03-05 2:01 ` [RFC PATCH net-next v6 02/15] net: page_pool: create hooks for custom page providers Mina Almasry
2024-03-05 21:54 ` David Wei
2024-03-05 22:36 ` Mina Almasry
2024-03-06 14:29 ` Pavel Begunkov
2024-03-06 17:04 ` Mina Almasry
2024-03-06 19:12 ` Pavel Begunkov
2024-03-06 21:59 ` Mina Almasry
2024-03-07 14:25 ` Pavel Begunkov
2024-03-08 4:57 ` David Wei
2024-03-08 19:53 ` Mina Almasry
2024-03-18 2:02 ` Christoph Hellwig
2024-03-18 2:49 ` David Wei
2024-03-18 23:22 ` Christoph Hellwig
2024-03-22 17:40 ` Mina Almasry
2024-03-22 23:19 ` Jakub Kicinski
2024-03-24 23:35 ` Christoph Hellwig
2024-03-24 23:35 ` Christoph Hellwig
2024-03-22 17:54 ` Mina Almasry
2024-03-24 23:37 ` Christoph Hellwig
2024-03-26 20:19 ` Mina Almasry
2024-03-28 7:31 ` Christoph Hellwig
2024-04-01 19:22 ` Mina Almasry
2024-04-08 15:34 ` Cong Wang
2024-03-05 2:01 ` [RFC PATCH net-next v6 03/15] net: page_pool: factor out page_pool recycle check Mina Almasry
2024-03-05 12:55 ` Yunsheng Lin
2024-03-05 2:01 ` [RFC PATCH net-next v6 04/15] net: netdev netlink api to bind dma-buf to a net device Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 05/15] netdev: support binding dma-buf to netdevice Mina Almasry
2024-03-05 9:04 ` Arnd Bergmann
2024-03-05 20:00 ` Mina Almasry
2024-03-05 21:42 ` Arnd Bergmann
2024-03-05 12:55 ` Yunsheng Lin
2024-03-05 21:17 ` Mina Almasry
2024-03-06 12:38 ` Yunsheng Lin
2024-03-06 22:10 ` Mina Almasry
2024-03-07 12:15 ` Yunsheng Lin
2024-03-08 3:58 ` Jakub Kicinski
2024-03-05 2:01 ` [RFC PATCH net-next v6 06/15] netdev: netdevice devmem allocator Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 07/15] page_pool: convert to use netmem Mina Almasry
2024-03-05 7:16 ` David Howells
2024-03-05 21:30 ` Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 08/15] page_pool: devmem support Mina Almasry
2024-03-05 21:42 ` Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 09/15] memory-provider: dmabuf devmem memory provider Mina Almasry
2024-03-06 2:28 ` David Wei
2024-03-06 2:42 ` Mina Almasry
2024-03-06 2:46 ` David Wei
2024-03-06 2:54 ` Mina Almasry
2024-03-06 14:58 ` Pavel Begunkov
2024-03-06 16:51 ` Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 10/15] net: support non paged skb frags Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 11/15] net: add support for skbs with unreadable frags Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 12/15] tcp: RX path for devmem TCP Mina Almasry
2024-03-05 8:41 ` Arnd Bergmann
2024-03-05 19:22 ` Mina Almasry
2024-03-05 19:39 ` Arnd Bergmann
2024-03-05 2:01 ` [RFC PATCH net-next v6 13/15] net: add SO_DEVMEM_DONTNEED setsockopt to release RX frags Mina Almasry
2024-03-05 2:01 ` [RFC PATCH net-next v6 14/15] net: add devmem TCP documentation Mina Almasry
2024-03-08 1:52 ` Jakub Kicinski [this message]
2024-03-05 2:01 ` [RFC PATCH net-next v6 15/15] selftests: add ncdevmem, netcat for devmem TCP Mina Almasry
2024-03-05 12:54 ` [RFC PATCH net-next v6 00/15] Device Memory TCP Yunsheng Lin
2024-03-05 19:38 ` Mina Almasry
2024-03-06 12:37 ` Yunsheng Lin
2024-03-26 0:28 ` Mina Almasry
2024-03-26 12:47 ` Yunsheng Lin
2024-03-26 20:14 ` Mina Almasry
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=20240307175251.309837e1@kernel.org \
--to=kuba@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=almasrymina@google.com \
--cc=andreas@gaisler.com \
--cc=andrii@kernel.org \
--cc=arnd@arndb.de \
--cc=asml.silence@gmail.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=christian.koenig@amd.com \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=dsahern@kernel.org \
--cc=dw@davidwei.uk \
--cc=eddyz87@gmail.com \
--cc=edumazet@google.com \
--cc=haoluo@google.com \
--cc=hawk@kernel.org \
--cc=hramamurthy@google.com \
--cc=ilias.apalodimas@linaro.org \
--cc=ink@jurassic.park.msu.ru \
--cc=jeroendb@google.com \
--cc=jgg@ziepe.ca \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=martin.lau@linux.dev \
--cc=mathieu.desnoyers@efficios.com \
--cc=mattst88@gmail.com \
--cc=mhiramat@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pkaligineedi@google.com \
--cc=richard.henderson@linaro.org \
--cc=rostedt@goodmis.org \
--cc=sdf@google.com \
--cc=shailend@google.com \
--cc=shakeelb@google.com \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=tsbogend@alpha.franken.de \
--cc=willemdebruijn.kernel@gmail.com \
--cc=yonghong.song@linux.dev \
/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.