OpenAFS Master Repository branch, master, updated. BP--openafs-stable-1_6_x-1306-g39484c6

Gerrit Code Review gerrit@openafs.org
Tue, 21 Jun 2011 18:53:22 -0700 (PDT)


The following commit has been merged in the master branch:
commit 39484c6e57cf993a713b4a989d1c0c227e6f496c
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.
    
    Change-Id: I2ed6bce63adf160c03518686ec25cbecc5084f5f
    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>

 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