On Fri, Aug 01, 2008 at 03:23:43PM -0400, J. Bruce Fields wrote: > On Fri, Aug 01, 2008 at 05:23:20PM +1000, Dave Chinner wrote: > > Having implemented the second option on a different NUMA aware > > OS and NFS server, I can say that it isn't that complex, nor that > > hard to screw up. > > > > 1. spawn a new thread only if all NFSDs are busy and there > > are still requests queued to be serviced. > > 2. rate limit the speed at which you spawn new NFSD threads. > > About 5/s per node was about right. > > 3. define an idle time for each thread before they > > terminate. That is, is a thread has not been asked to > > do any work for 30s, exit. > > 4. use the NFSD thread pools to allow per-pool independence. > > Actually, I lost you on #4. You mean that you apply 1-3 independently > on each thread pool? Or something else? The former. i.e when you have a NUMA machine with a pool-per-node or an SMP machine with a pool-per-cpu configuration, you can configure the pools the differently according to the hardware config and interrupt vectoring. This is especially useful if want to prevent NFSDs from dominating the CPU taking disk interrupts or running user code.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html