All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next 0/4] mptcp: performance improvemets
@ 2023-09-20 12:45 Paolo Abeni
  2023-09-20 12:45 ` [PATCH mptcp-next 1/4] mptcp: properly account fastopen data Paolo Abeni
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Paolo Abeni @ 2023-09-20 12:45 UTC (permalink / raw)
  To: mptcp

Cool subj just to catch more attention;)

This is a follow-up the yday mtg and to the discussion started from
issues/437.

The first 3 patches implement a working support for rcvlowat, with the
intended and relevant side effect of avoiding most TCP-level immediate
acks.

The existing check in:

https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_input.c#L5534

newarly always triggers immediate ack, as the any data received
on the subflow is usually immediately moved into the msk. That is, we
nearly always have: tp->rcv_nxt == tp->copied_seq.

That causes an unneeded large amount of (tcp-level) ack. After patch
3, MPTCP behaves much more alike plain TCP, compressing/delaying many
unneeded immediate ack and moving some of them at recvmsg() time.

Such change has quite a relevant effect on the max tput, ranging
from -4% to + 40% depending on the specific setup.
The small regression happens on CPU-bounded bulk transfers, with
not-so-large write buffer and can be elimitated increasing the write
buffer size. Even in such scenario, the overall efficency (B/W divided
by the total CPU cycles consumed) increases.
My personal take is that overall this for the better.

The last patch gives some speed-up to the tx path, just by using the
'correct' (or better) helper to memcpy the data from the user-space
into the kernel buffer.

Paolo Abeni (4):
  mptcp: properly account fastopen data
  mptcp: use plain bool instead of custom binary enum
  mptcp: give rcvlowat some love.
  mptcp: use copy_from_iter helpers on transmit..

 net/mptcp/fastopen.c |  1 +
 net/mptcp/protocol.c | 42 +++++++++++++++++++++++++-----------------
 net/mptcp/protocol.h | 27 +++++++++++++++++++++------
 net/mptcp/sockopt.c  | 31 +++++++++++++++++++++++++++++++
 net/mptcp/subflow.c  | 24 ++++++++++++++++--------
 5 files changed, 94 insertions(+), 31 deletions(-)

-- 
2.41.0


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

end of thread, other threads:[~2023-09-23  8:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-20 12:45 [PATCH mptcp-next 0/4] mptcp: performance improvemets Paolo Abeni
2023-09-20 12:45 ` [PATCH mptcp-next 1/4] mptcp: properly account fastopen data Paolo Abeni
2023-09-20 12:45 ` [PATCH mptcp-next 2/4] mptcp: use plain bool instead of custom binary enum Paolo Abeni
2023-09-20 12:45 ` [PATCH mptcp-next 3/4] mptcp: give rcvlowat some love Paolo Abeni
2023-09-20 12:45 ` [PATCH mptcp-next 4/4] mptcp: use copy_from_iter helpers on transmit Paolo Abeni
2023-09-22 16:59 ` [PATCH mptcp-next 0/4] mptcp: performance improvemets Mat Martineau
2023-09-23  8:20 ` 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.