Re: status of nfs and tcp with 2.4

Trond Myklebust (trond.myklebust@fys.uio.no)
28 Sep 2001 10:46:26 +0200


>>>>> " " == James D Strandboge <jstrand1@rochester.rr.com> writes:

> On Thu, Sep 27, 2001 at 05:32:09PM +0200 or thereabouts, Trond
> Myklebust wrote:
>> None: AFAIK nobody has yet written any code that works for the
>> server.

> In your opinion, how involved would it be to write the tcp code
> since the udp is already written? I haven't actually looked
> into it much, and thought you might have some ideas, or perhaps
> pointers.

The biggest problem is to prevent the TCP server hogging all the
threads when a client gets congested.

With the UDP code, we use non-blocking I/O and simply drop all replies
that don't get through. For TCP dropping replies is not acceptable as
the client will only resend requests every ~60seconds. Currently, the
code therefore uses blocking I/O something which means that if the
socket blocks, you run out of free nfsd threads...

There are 2 possible strategies:

1 Allocate 1 thread per TCP connection
2 Use non-blocking I/O, but allow TCP connections to defer sending
the reply until the socket is available (and allow the thread to
service other requests while the socket is busy).

I started work on (2) last autumn, but I haven't had time to get much
done since then. It's on my list of priorities for 2.5.x though, so if
nobody else wants to get their hands dirty I will get back to it...

Cheers,
Trond
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/