1. 16 Jul, 2002 7 commits
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [7/8] · 0b51abc8
      Trond Myklebust authored
        - Divorce the allocation of free request slots and the congestion
          control. Make the congestion control apply only to when we
          actually send data over the wire. This means that we *do* apply
          congestion control to resent requests: if a timeout has occured,
          and there are too many requests on the wire, delay resending until
          the congestion algorithm allows it.
      
        - Improve spinlocking by putting the congestion avoidance algoritm
          under xprt->sock_lock. This lock has to be taken *anyway* in
          (almost) all cases where we are updating the congestion control
          data.
      0b51abc8
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [6/8] · 4edf0555
      Trond Myklebust authored
      Eliminate the arbitrary timeouts in xprt_adjust_cwnd(). Strict
      enforcement of the congestion avoidance algorithm as detailed in Van
      Jacobson's 1998 paper http://www-nrg.ee.lbl.gov/nrg-papers.html
      Congestion Avoidance and Control.
      4edf0555
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [5/8] · 514349dc
      Trond Myklebust authored
      Clean up the Van Jacobson network congestion control code.
      514349dc
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [4/8] · c6b43f23
      Trond Myklebust authored
      Cleanups for the socket locking mechanism.
      
      Improve RPC request ordering by ensuring that RPC tasks that are
      already queued on xprt->sending get sent before tasks that happen to
      get scheduled just when there is a free slot.
      
      In case the socket send buffer is full, queue the tasks on
      xprt->pending rather than xprt->sending in order to eliminate the risk
      of accidental wakeups from xprt_release_write() and xprt_write_space().
      c6b43f23
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [3/8] · 9ba7d221
      Trond Myklebust authored
      Improve the response to timeouts. As requests time out, we delay
      timing out the remaining requests (in fact we follow exponential
      backoff). This is done because we assume either that the round trip
      time has been underestimated, or that the network/server is congested,
      and we need to back off the resending of new requests.
      9ba7d221
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [2/8] · fa7b279e
      Trond Myklebust authored
      Implement a count of the number of timeouts that have occured since
      we last recorded a successful reply from the server.
      
      For the moment this information is merely used in order to improve the
      estimate of whether or not the server is down. It will be used in
      patch 3/8 in order to improve the timeout backoff algorithm.
      fa7b279e
    • Trond Myklebust's avatar
      [PATCH] RPC over UDP congestion control updates [1/8] · 77d79030
      Trond Myklebust authored
      Implement the basic round trip timing algorithm in order to adapt the
      timeout values for the most common NFS operations to the server's
      rate of response.
      Algorithm is described in Van Jacobson's paper 1998 paper
      on http://www-nrg.ee.lbl.gov/nrg-papers.html, and is the same as is
      used for most TCP stacks.
      
      Following the *BSD code, we implement separate rtt timers for GETATTR,
      LOOKUP, READ/READDIR/READLINK, and WRITE. In addition to this, there
      is one extra timer for the COMMIT operation.
      All the remaining RPC calls use the current system in which a fixed
      timeout value gets set by the 'timeo' mount option.
      
      In case of a timeout, the current exponential backoff algoritm is
      implemented. Subsequent patches will improve this...
      77d79030
  2. 15 Jul, 2002 33 commits