Re: NFS server QoS ideas

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

 



On Wed, 24 Sep 2014, Benjamin Coddington wrote:

> Hi Mark, I've often thought about working on a project like this - 
> usually when I've been trying to keep a number of systems responsive 
> when there's been one very aggressive client, which typically would be 
> identified by a single uid, or a uid:ip pair.  I think your second 
> criteria would be the most useful.

Thanks Ben.

To do uid:ip paid would be similarly possible, but actually we're also 
interested in uid only -- to balance load between users on a cluster.
 
> I've done absolutely no research on this, but I had thought offhandedly 
> that a solution might integrate with cgroups somehow.

I'm not sure, as this is a server-side thing, there's no real processes to 
partition in cgroups.
 
> That's not much (less than 2 cents), but I think this feature would be
> welcomed warmly by sysadmins running shared NFS systems.

Thanks, good to hear.

I'd appreciate any input or caveats from anyone on the ideas I posted for 
implementing this.

Thanks

-- 
Mark


> On Wed, 24 Sep 2014, Mark Hills wrote:
> 
> > I am looking at possibilities to implement QoS (quality of service) in an
> > NFS server -- for a multiuser HPC environment, on NFSv3.
> > 
> > The desire is for a fully loaded server to process requests in some kind
> > of "fair share" (like round robin) or priorities based on some attribute;
> > eg. uid at the client, request type + origin, or even directory etc.
> > 
> > Criteria could be fairly blunt and specific to our use case to begin with.
> > 
> > I've looked at the code with the following ideas for where to start.
> > 
> > It seems the implementation depends a lot on which attributes to
> > share/schedule on:
> > 
> > 1) by client IP:
> > 
> >   make use the existing structures
> > 
> >   enhance the svc_xprt_enqueue/dequeue process to schedule svc_xprt
> >   as these are already per-client
> > 
> > 2) by client uid or other RPC attribute:
> > 
> >   have svc_recv make multiple calls to svc_handle_xprt
> > 
> >   buffer the requests into multiple queues held at svc_pool (re-use
> >   xpt_deferred?)
> > 
> > 3) by NFS operation, file handle etc.:
> > 
> >   most awkward, as there is not buffering of requests at the NFS level
> >   or shared between threads
> > 
> >   perhaps do as (2) but with a function in svc_program to return
> >   scheduling criteria
> > 
> > It looks like I need to consider the behaviour when there are multiple
> > svc_pool (ie. NUMA)
> > 
> > This is the first time I've looked into this code, I'm interested in any
> > comments/criticisms or alternatives.
> > 
> > Thanks
> > 
> > -- 
> > Mark
--
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




[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