Message ID | 20250218-net-next-mptcp-rx-path-refactor-v1-0-4a47d90d7998@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | mptcp: rx path refactor | expand |
Hello: This series was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Tue, 18 Feb 2025 19:36:11 +0100 you wrote: > Paolo worked on this RX path refactor for these two main reasons: > > - Currently, the MPTCP RX path introduces quite a bit of 'exceptional' > accounting/locking processing WRT to plain TCP, adding up to the > implementation complexity in a miserable way. > > - The performance gap WRT plain TCP for single subflow connections is > quite measurable. > > [...] Here is the summary with links: - [net-next,1/7] mptcp: consolidate subflow cleanup https://git.kernel.org/netdev/net-next/c/c3349a22c200 - [net-next,2/7] mptcp: drop __mptcp_fastopen_gen_msk_ackseq() https://git.kernel.org/netdev/net-next/c/f03afb3aeb9d - [net-next,3/7] mptcp: move the whole rx path under msk socket lock protection https://git.kernel.org/netdev/net-next/c/bc68b0efa1bf - [net-next,4/7] mptcp: cleanup mem accounting https://git.kernel.org/netdev/net-next/c/6639498ed85f - [net-next,5/7] net: dismiss sk_forward_alloc_get() https://git.kernel.org/netdev/net-next/c/c8802ded4658 - [net-next,6/7] mptcp: dismiss __mptcp_rmem() https://git.kernel.org/netdev/net-next/c/51fe9cb9213e - [net-next,7/7] mptcp: micro-optimize __mptcp_move_skb() https://git.kernel.org/netdev/net-next/c/e0ca4057e0ec You are awesome, thank you!
Paolo worked on this RX path refactor for these two main reasons: - Currently, the MPTCP RX path introduces quite a bit of 'exceptional' accounting/locking processing WRT to plain TCP, adding up to the implementation complexity in a miserable way. - The performance gap WRT plain TCP for single subflow connections is quite measurable. The present refactor addresses both the above items: most of the additional complexity is dropped, and single stream performances increase measurably, from 55Gbps to 71Gbps in Paolo's loopback test. As a reference, plain TCP was around 84Gbps on the same host. The above comes to a price: the patch are invasive, even in subtle ways. Note: patch 5/7 removes the sk_forward_alloc_get() helper, which caused some trivial modifications in different places in the net tree: sockets, IPv4, sched. That's why a few more people have been Cc here. Feel free to only look at this patch 5/7. Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> --- Paolo Abeni (7): mptcp: consolidate subflow cleanup mptcp: drop __mptcp_fastopen_gen_msk_ackseq() mptcp: move the whole rx path under msk socket lock protection mptcp: cleanup mem accounting net: dismiss sk_forward_alloc_get() mptcp: dismiss __mptcp_rmem() mptcp: micro-optimize __mptcp_move_skb() include/net/sock.h | 13 --- net/core/sock.c | 2 +- net/ipv4/af_inet.c | 2 +- net/ipv4/inet_diag.c | 2 +- net/mptcp/fastopen.c | 27 +---- net/mptcp/protocol.c | 317 ++++++++++++++++----------------------------------- net/mptcp/protocol.h | 22 ++-- net/mptcp/subflow.c | 36 +++--- net/sched/em_meta.c | 2 +- 9 files changed, 134 insertions(+), 289 deletions(-) --- base-commit: b4cb730862cf4f59ac3dcb83b9ac4eeb29dbfb0e change-id: 20250106-net-next-mptcp-rx-path-refactor-f44579efb57c Best regards,