On Mon, Oct 8, 2012 at 4:04 PM, Myklebust, Trond <Trond.Myklebust@xxxxxxxxxx> wrote: > On Mon, 2012-10-08 at 15:59 -0400, Andy Adamson wrote: >> On Mon, Oct 8, 2012 at 1:50 PM, Trond Myklebust >> <Trond.Myklebust@xxxxxxxxxx> wrote: >> > Aside from it being a layering violation, there is no point in doing so: >> > - If slots are available, then the waitqueue will be empty. >> > - If no slots are available, then the wake up just causes waitqueue churn >> >> We call rpc_wake_up so that I/O waiting on the DS session, all of >> which needs to be re-directed to the MDS (not via the state recovery >> machinery), will by-pass the RPC machine "try each task one at a time >> and redirect on failure" which includes the 60 second TCP timeout on >> DS connection failures. >> >> So, it doesn't just cause waitqueue churn, it significantly reduces >> the time it takes to recover to the MDS. >> > > All it does is a wake up... That will happen _ANYWAY_ as soon as a slot > is made available. That is true. But why wait? Especially when all tasks are I/O, and if the application happens to be doing a heavy I/O workload, there can be hundreds of tasks on that wait queue. We don't care if any DS slots are available. We have given up and re redirecting these tasks to the MDS session. The sooner, the better. I'll re-run some tests and demonstrate the time difference with/without the rpc_wake_up. -->Andy > > So yes, it is pure churn... > > -- > Trond Myklebust > Linux NFS client maintainer > > NetApp > Trond.Myklebust@xxxxxxxxxx > www.netapp.com -- 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