Re: [PATCH 4/4] NFSv4.1: pNFS has no business touching the slot table wait queue...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2012-10-08 at 16:24 -0400, Andy Adamson wrote:
> 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.

You aren't just redirecting those tasks, you are waking up _all_ tasks
on that nfs_client's session.

That _may_ be acceptable in the case where we call
nfs4_mark_deviceid_unavailable(), _if_ the nfs_client is a pure data
server and isn't also acting as an MDS for some filesystem.

It is clearly overkill in the case where the DS is returning 
NFS4ERR_FHEXPIRED or some such error that applies only to this one
layout.

> I'll re-run some tests and demonstrate the time difference
> with/without the rpc_wake_up.


-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com
��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux