OpenAFS Master Repository branch, openafs-stable-1_6_x, updated. openafs-stable-1_6_0pre6-26-g80ba47c
Gerrit Code Review
gerrit@openafs.org
Thu, 7 Jul 2011 07:06:25 -0700 (PDT)
The following commit has been merged in the openafs-stable-1_6_x branch:
commit e8801635a41f83bc6bb438a2f33807d7ffeb6430
Author: Simon Wilkinson <sxw@your-file-system.com>
Date: Fri Jun 17 22:06:54 2011 +0100
rx: Compute smoothed RTT per call, not per peer.
RX uses the TCP RTT smoothing algorithm as described in RFC2988.
However, the TCP algorithm is designed to accept samples from a
single connection, accepting a new sample once per RTT.
RFC2988 suggests that "when multiple samples are taken
per RTT the [ alogrithm ] may keep an inadequate RTT history."
In RX's implementation, we use a single instance of this alogrithm
per peer, and input all of the samples from all of the active calls
and connections into this same instance. This leads to us taking
a significantly (potentially many magnitudes) larger number of samples
per RTT, and rapidly losing the RTT history. With RX's implementation,
short lived network events may easily bias the RTT, and cause large
numbers of packets to time out.
This change fixes this by moving the RTT calculation onto a per call
basis. We still update the peer with our caclulated value, so that new
calls may be created with an RTT corresponding to the current value for
the connection, rather than having to start high and converge downwards.
(cherry picked from commit 39484c6e57cf993a713b4a989d1c0c227e6f496c)
Reviewed-on: http://gerrit.openafs.org/4861
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
Change-Id: I5b33323ceed7231bd70e43284d83dfe1db144188
Reviewed-on: http://gerrit.openafs.org/4916
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/rx/rx.c | 78 +++++++++++++++++++++++++++++-----------------
src/rx/rx.h | 4 ++-
src/rx/rx_kcommon.c | 22 +++++--------
src/rx/rx_packet.c | 2 -
src/rx/rx_prototypes.h | 1 +
src/rx/rx_user.c | 13 +++----
src/rx/test/testclient.c | 3 +-
7 files changed, 68 insertions(+), 55 deletions(-)
--
OpenAFS Master Repository