All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next v2 0/7] mptcp: rx path refactor
@ 2024-12-06 12:09 Paolo Abeni
  2024-12-06 12:10 ` [PATCH mptcp-next v2 1/7] mptcp: prevent excessive coalescing on receive Paolo Abeni
                   ` (10 more replies)
  0 siblings, 11 replies; 18+ messages in thread
From: Paolo Abeni @ 2024-12-06 12:09 UTC (permalink / raw)
  To: mptcp

This is a batch of changes I had sitting in my local tree for a while.
Why another refactor you may ask? Two main resons:

- 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 misurable 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 my loopback test. As a
reference, plain TCP is around 84Gps on the same host.

The above comes to a price: the patch are invasive, even in subtle ways:
the chance of destabilizing the implementation is real (ence the
additional, intentional '-next' into the subj).

In any case keeping the patch hidden for longer was not going to do any
good, so here we are.

Changes from v1:
  - fixed several data stream corruption and wake-up misses due
    to multi subflows races
  - added patches 1-3 mainly to address the above
  - added an additional follow-up patch (patch 7) with more cleanup

Paolo Abeni (7):
  mptcp: prevent excessive coalescing on receive
  tcp: fix recvbuffer adjust on sleeping rcvmsg
  mptcp: don't always assume copied data in mptcp_cleanup_rbuf()
  mptcp: consolidate subflow cleanup
  mptcp: move the whole rx path under msk socket lock protection
  mptcp: cleanup mem accounting.
  net: dismiss sk_forward_alloc_get()

 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 |   4 +-
 net/mptcp/protocol.c | 259 +++++++++++++------------------------------
 net/mptcp/protocol.h |   6 +-
 net/mptcp/subflow.c  |  33 +++---
 net/sched/em_meta.c  |   2 +-
 9 files changed, 104 insertions(+), 219 deletions(-)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2024-12-30 18:24 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-06 12:09 [PATCH mptcp-next v2 0/7] mptcp: rx path refactor Paolo Abeni
2024-12-06 12:10 ` [PATCH mptcp-next v2 1/7] mptcp: prevent excessive coalescing on receive Paolo Abeni
2024-12-10 12:03   ` Matthieu Baerts
2024-12-21 10:00     ` Matthieu Baerts
2024-12-27  9:40       ` Paolo Abeni
2024-12-30 18:24         ` Matthieu Baerts
2024-12-06 12:10 ` [PATCH mptcp-next v2 2/7] tcp: fix recvbuffer adjust on sleeping rcvmsg Paolo Abeni
2024-12-06 12:10 ` [PATCH mptcp-next v2 3/7] mptcp: don't always assume copied data in mptcp_cleanup_rbuf() Paolo Abeni
2024-12-06 12:10 ` [PATCH mptcp-next v2 4/7] mptcp: consolidate subflow cleanup Paolo Abeni
2024-12-06 12:11 ` [PATCH mptcp-next v2 5/7] mptcp: move the whole rx path under msk socket lock protection Paolo Abeni
2024-12-06 12:11 ` [PATCH mptcp-next v2 6/7] mptcp: cleanup mem accounting Paolo Abeni
2024-12-07  1:45   ` Mat Martineau
2024-12-10  9:00     ` Paolo Abeni
2024-12-06 12:11 ` [PATCH mptcp-next v2 7/7] net: dismiss sk_forward_alloc_get() Paolo Abeni
2024-12-06 13:17 ` [PATCH mptcp-next v2 0/7] mptcp: rx path refactor MPTCP CI
2024-12-06 16:41 ` Paolo Abeni
2024-12-21  2:12 ` Mat Martineau
2024-12-21 11:17 ` Matthieu Baerts

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.