On 2013-12-05 13:14, matthew green wrote:
Run a single nfsd and it all works much better.
On that basis should the NetBSD default be changed from -n 4?
i definitely would object to such a change.
i see slowness from multiple clients when i run nfsd with just
one thread. i've never seen the problem dsl has seen with a
netbsd nfs server (only other problems! :-)
I agree. I think it's nonsense. The idea that dsl have is that having
several I/O requests running in parallel against one server would cause
starvation on I/O in one thread because the others keeps the disk busy.
However, that assumes that I/O gets reordered, and that this reordering
can actually cause some I/O to get starved for long enough that NFS
times out and retries.
If the I/O reordering happens in the hardware, I think that most sane
hardware guarantees that some I/O operation is not skipped more than a
certain time before being handled. Also, assuming we are doing an
elevator scan algorithm (or similar) you will eventually always hit the
request, and unless you have a huge I/O queue, it will not take that long.
If the reordering takes place in software, and the software starves some
I/O requests, then the software is buggy.
If you actually hit upon such a case (buggy I/O optimizations, either in
hardware or software), it might be worth to explicitly use other values
than defaults in all kind of places for that specific situation.
But in general, allowing several I/O requests in parallel actually has
the chance of improving I/O throughput, even if it all hits the same
disk. And we have not even touched on the gains if you actually have
several NFS servers, or several disks on the NFS server...
Johnny