rxrpc: Implement RACK/TLP to deal with transmission stalls [RFC8985]
authorDavid Howells <dhowells@redhat.com>
Wed, 4 Dec 2024 07:47:07 +0000 (07:47 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 9 Dec 2024 21:48:33 +0000 (13:48 -0800)
commit7c482665931b6ce7bc72fa5feae6c35567070296
treea97e28155f864d42668731c195828491f01e33d1
parent4ee4c2f82b81c088d1514b04c28c84c15e98ba1a
rxrpc: Implement RACK/TLP to deal with transmission stalls [RFC8985]

When an rxrpc call is in its transmission phase and is sending a lot of
packets, stalls occasionally occur that cause severe performance
degradation (eg. increasing the transmission time for a 256MiB payload from
0.7s to 2.5s over a 10G link).

rxrpc already implements TCP-style congestion control [RFC5681] and this
helps mitigate the effects, but occasionally we're missing a time event
that deals with a missing ACK, leading to a stall until the RTO expires.

Fix this by implementing RACK/TLP in rxrpc.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/trace/events/rxrpc.h
net/rxrpc/Makefile
net/rxrpc/ar-internal.h
net/rxrpc/call_event.c
net/rxrpc/call_object.c
net/rxrpc/input.c
net/rxrpc/input_rack.c [new file with mode: 0644]
net/rxrpc/io_thread.c
net/rxrpc/output.c