[PATCH net-next 00/10] rxrpc: Development

From: David Howells
Date: Wed Aug 01 2018 - 08:58:50 EST



Here are some patches that add some more tracepoints to AF_RXRPC and fix
some issues therein. The most significant points are:

(1) Display the call timeout information in /proc/net/rxrpc/calls.

(2) Save the call's debug_id in the rxrpc_channel struct so that it can be
used in traces after the rxrpc_call struct has been destroyed.

(3) Increase the size of the kAFS Rx window from 32 to 63 to be about the
same as the Auristor server.

(4) Propose the terminal ACK for a client call after it has received all
its data to be transmitted after a short interval so that it will get
transmitted if not first superseded by a new call on the same channel.

(5) Flush ACKs during the data reception if we detect that we've run out
of data.[*]

(6) Trace successful packet transmission and softirq to process context
socket notification.

[*] Note that on a uncontended gigabit network, rxrpc runs in to trouble
with ACK packets getting batched together (up to ~32 at a time)
somewhere between the IP transmit queue on the client and the ethernet
receive queue on the server.

I can see the kernel afs filesystem client and Auristor userspace
server stalling occasionally on a 512MB single read. Sticking
tracepoints in the network driver at either end seems to show that,
although the ACK transmissions made by the client are reasonably spaced
timewise, the received ACKs come in batches from the network card on
the server.

I'm not sure what, if anything, can be done about this.


The patches are tagged here:

git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
rxrpc-next-20180801

and can also be found on this branch:

http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-next

David
---
David Howells (9):
rxrpc: Display call expect-receive-by timeout in proc
rxrpc: Show some more information through /proc files
rxrpc: Fix the trace for terminal ACK (re)transmission
rxrpc: Trace packet transmission
rxrpc: Fix ACK proposal tracepoint
rxrpc: Trace socket notification
rxrpc: Increase the size of a call's Rx window
rxrpc: Propose, but don't immediately transmit, the final ACK for a call
rxrpc: Transmit more ACKs during data reception

YueHaibing (1):
rxrpc: remove redundant variables 'sp' and 'did_discard'


include/trace/events/rxrpc.h | 129 ++++++++++++++++++++++++++++++------------
net/rxrpc/ar-internal.h | 4 +
net/rxrpc/call_event.c | 2 -
net/rxrpc/conn_client.c | 3 -
net/rxrpc/conn_event.c | 17 ++++--
net/rxrpc/input.c | 15 ++++-
net/rxrpc/local_event.c | 5 +-
net/rxrpc/output.c | 32 ++++++++--
net/rxrpc/proc.c | 23 ++++++-
net/rxrpc/recvmsg.c | 23 ++++++-
net/rxrpc/rxkad.c | 7 ++
11 files changed, 193 insertions(+), 67 deletions(-)