[Virtio-fs] Achieving parallelism in virtiofsd

Miklos Szeredi mszeredi at redhat.com
Tue Jul 9 09:31:39 UTC 2019


On Tue, Jul 9, 2019 at 10:15 AM Stefan Hajnoczi <stefanha at redhat.com> wrote:
>
> On Mon, Jul 08, 2019 at 04:08:22PM +0100, Dr. David Alan Gilbert wrote:
> > * Stefan Hajnoczi (stefanha at redhat.com) wrote:
> > > Hi,
> > > Here are my plans for achieving parallelism in virtiofsd.  This will
> > > improve performance for workloads that keep more than one request in
> > > flight at a time.
> > >
> > > Today virtiofsd performance is limited because it only processes 1
> > > request at a time.  This can be improved in two independent ways:
> > > parallel request processing and multiqueue.
> > >
> > > Parallel request processing means working on more than one request at a
> > > time.  A request that blocks should not prevent the next request from
> > > executing.  The FUSE protocol is asynchronous so it's just a question of
> > > adjusting virtiofsd.
> >
> > Are there any ordering constraints? Or barriers etc?
>
> FUSE_INIT must be processed before the session is usable for
> general-purpose requests.  So there is at least one ordering constraint
> in the FUSE protocol :).
>
> Miklos: Can you confirm that fuse.ko does not assume ordering
> constraints on general-purpose requests (lookup, create, read, write,
> etc)?  For example, does it ever queue up requests and expect them to be
> processed in order?

Fuse does not assume that requests will be processed in order of queuing.

If request B is dependent on request A, then B is only queued if reply
for A is received.

Thanks,
Miklos




More information about the Virtio-fs mailing list