On Mon, 24 Apr 2006, Sam Leffler wrote:

   sys/nfsserver        nfsrvcache.h  Log:
 Bump up the NFS server dupreq cache limit to 2K (from 64). With a small
duplicate request cache, under heavy load a lot of non-idempotent requests
 were getting served again, resulting in errors.
How does increasing the cache size fix this problem?

Fundamentally it doesn't, this change just pushes it out of the regime
where it's trivial to overflow.

Why is it hard to do a real fix?  Or is this a temporary bandaid?

It's really a problem with NFS over unreliable transports. You can get a variety of re-ordering, drop, duplicate delivery, etc, effects, which the RPC code has to try and handle as the transport doesn't. RPC over UDP doesn't have an ACK for replies, it simply has request retransmit, so the server has no way to know when a reply has been received, so it has to hold onto it. The reason for the idempotent/non-idempotent concern is that for idempotent operations, it doesn't matter if you execute them twice (by definition). However, some requests aren't idempotent -- rename, for example, won't behave the same way twice, so if you want to not return ENOENT for a retransmit of the request, you have to keep around the reply for a bit. Unpretty, but it's not clear what else you can do.

Robert N M Watson
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to