Messages in this thread |  | | Subject | Re: status of nfs and tcp with 2.4 | From | Trond Myklebust <> | Date | 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/
|  |