[PATCH v9 mptcp-next 0/6] mptcp: address stall under memory pressure

Paolo Abeni posted 6 patches 1 week, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/cover.1779876523.git.pabeni@redhat.com
There is a newer version of this series
net/mptcp/mib.c      |   3 +
net/mptcp/mib.h      |   3 +
net/mptcp/options.c  |  35 +++++-
net/mptcp/protocol.c | 247 +++++++++++++++++++++++++++++++------------
4 files changed, 218 insertions(+), 70 deletions(-)
[PATCH v9 mptcp-next 0/6] mptcp: address stall under memory pressure
Posted by Paolo Abeni 1 week, 5 days ago
This an attempt to fix the data transfer stall reported by Geliang and
Gang more carefully enforcing memory constraints at the MPTCP level.

This iteration introduces has no significant change over the previous
one; the already merged patches has been dropped, and the remaining ones
rebases on top. The main delta is the commit message for patch 4, here
completely reworderd, as its content become obsoleted in the past
reworks.

Note that `multi_chunk_sendfile` and `multiproc*` test cases in
mptcp_data *may* require longer timeout than default[1].

Patch 1 is actually a fix for a pre-existing issues targeting net,
included here just for my convenience.

Patch 2 and 3 make the admission check much more strict for incoming
packets exceeding the memory limits, with some exception for fallback
sockets.
Patch 4 implements OoO queue pruning for MPTCP.
Finally patch 5 and 6 improve the MPTCP-level retransmission schema to
make recovery from memory pressure/after MPTCP-level drop significantly
faster.

[1] In my testing on v8 and v9 mptcp_data survived a few hundred
iterations with the default timeout. Some independent testing would be
appreciated.
---
v8 -> v9:
  - dropped already merged old patches 1-3
  - reworded commit message in patch 4

Paolo Abeni (6):
  mptcp: allow subflow rcv wnd to shrink
  mptcp: explicitly drop over memory limits
  mptcp: enforce hard limit on backlog flushing
  mptcp: implemented OoO queue pruning
  mptcp: move the retrans loop to a separate helper
  mptcp: let the retrans scheduler do its job.

 net/mptcp/mib.c      |   3 +
 net/mptcp/mib.h      |   3 +
 net/mptcp/options.c  |  35 +++++-
 net/mptcp/protocol.c | 247 +++++++++++++++++++++++++++++++------------
 4 files changed, 218 insertions(+), 70 deletions(-)

-- 
2.54.0
Re: [PATCH v9 mptcp-next 0/6] mptcp: address stall under memory pressure
Posted by MPTCP CI 1 week, 5 days ago
Hi Paolo,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal (except selftest_mptcp_join): Unstable: 1 failed test(s): selftest_simult_flows ⚠️ 
- KVM Validation: normal (only selftest_mptcp_join): Success! ✅
- KVM Validation: debug (except selftest_mptcp_join): Success! ✅
- KVM Validation: debug (only selftest_mptcp_join): Success! ✅
- KVM Validation: btf-normal (only bpftest_all): Success! ✅
- KVM Validation: btf-debug (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/26507260311

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/c82090742e4b
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=1101575


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-normal

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)