All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: Dominique Martinet <asmadeus@codewreck.org>,
	"cdupontd@redhat.com" <cdupontd@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Venegas Munoz,
	Jose Carlos" <jose.carlos.venegas.munoz@intel.com>,
	Greg Kurz <groug@kaod.org>, virtio-fs-list <virtio-fs@redhat.com>,
	Vivek Goyal <vgoyal@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	v9fs-developer@lists.sourceforge.net, "Shinde,
	Archana M" <archana.m.shinde@intel.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: Can not set high msize with virtio-9p (Was: Re: virtiofs vs 9p performance)
Date: Fri, 05 Mar 2021 15:57:17 +0100	[thread overview]
Message-ID: <32960057.KqypvAduHN@silver> (raw)
In-Reply-To: <YD+iPTKnOlF/HwlV@codewreck.org>

On Mittwoch, 3. März 2021 15:50:37 CET Dominique Martinet wrote:
> Christian Schoenebeck wrote on Wed, Mar 03, 2021 at 03:04:21PM +0100:
> > > We can definitely increase the default, for all transports in my
> > > opinion.
> > > As a first step, 64 or 128k?
> > 
> > Just to throw some numbers first; when linearly reading a 12 GB file on
> > guest (i.e. "time cat test.dat > /dev/null") on a test machine, these are
> > the results that I get (cache=mmap):
> > 
> > msize=16k: 2min7s (95 MB/s)
> > msize=64k: 17s (706 MB/s)
> > msize=128k: 12s (1000 MB/s)
> > msize=256k: 8s (1500 MB/s)
> > msize=512k: 6.5s (1846 MB/s)
> > 
> > Personally I would raise the default msize value at least to 128k.
> 
> Thanks for the numbers.
> I'm still a bit worried about too large chunks, let's go with 128k for
> now -- I'll send a couple of patches increasing the tcp max/default as
> well next week-ish.

Ok, sounds good!

> > Personally I don't find raw I/O the worst performance issue right now. As
> > you can see from the numbers above, if 'msize' is raised and I/O being
> > performed with large chunk sizes (e.g. 'cat' automatically uses a chunk
> > size according to the iounit advertised by stat) then the I/O results are
> > okay.
> > 
> > What hurts IMO the most in practice is the sluggish behaviour regarding
> > dentries ATM. The following is with cache=mmap (on guest side):
> > 
> > $ time ls /etc/ > /dev/null
> > real    0m0.091s
> > user    0m0.000s
> > sys     0m0.044s
> > $ time ls -l /etc/ > /dev/null
> > real    0m0.259s
> > user    0m0.008s
> > sys     0m0.016s
> > $ ls -l /etc/ | wc -l
> > 113
> > $
> 
> Yes, that is slow indeed.. Unfortunately cache=none/mmap means only open
> dentries are pinned, so that means a load of requests everytime.
> 
> I was going to suggest something like readdirplus or prefetching
> directory entries attributes in parallel/background, but since we're not
> keeping any entries around we can't even do that in that mode.
> 
> > With cache=loose there is some improvement; on the first "ls" run (when
> > its
> > not in the dentry cache I assume) the results are similar. The subsequent
> > runs then improve to around 50ms for "ls" and around 70ms for "ls -l".
> > But that's still far from numbers I would expect.
> 
> I'm surprised cached mode is that slow though, that is worth
> investigating.
> With that time range we are definitely sending more requests to the
> server than I would expect for cache=loose, some stat revalidation
> perhaps? I thought there wasn't any.

Yes, it looks like more 9p requests are sent than actually required for 
readdir. But I haven't checked yet what's going on there in detail. That's 
definitely on my todo list, because this readdir/stat/direntry issue ATM 
really hurts the most IMO.

> I don't like cache=loose/fscache right now as the reclaim mechanism
> doesn't work well as far as I'm aware (I've heard reports of 9p memory
> usage growing ad nauseam in these modes), so while it's fine for
> short-lived VMs it can't really be used for long periods of time as
> is... That's been on my todo for a while too, but unfortunately no time
> for that.

Ok, that's new to me. But I fear the opposite is currently worse; with 
cache=mmap and running a VM for a longer time: 9p requests get slower and 
slower, e.g. at a certain point you're waiting like 20s for one request. I 
haven't investigated the cause here either yet. It may very well be an issue 
on QEMU side: I have some doubts in the fid reclaim algorithm on 9p server 
side which is using just a linked list. Maybe that list is growing to 
ridiculous sizes and searching the list with O(n) starts to hurt after a 
while.

With cache=loose I don't see such tremendous slowdowns even on long runs, 
which might indicate that this symptom might indeed be due to a problem on 
QEMU side.

> Ideally if that gets fixed, it really should be the default with some
> sort of cache revalidation like NFS does (if that hasn't changed, inode
> stats have a lifetime after which they get revalidated on access, and
> directory ctime changes lead to a fresh readdir) ; but we can't really
> do that right now if it "leaks".
> 
> Some cap to the number of open fids could be appreciable as well
> perhaps, to spare server resources and keep internal lists short.

I just reviewed the fid reclaim code on 9p servers side to some extent because 
of a security issue on 9p server side in this area recently, but I haven't 
really thought through nor captured the authors' original ideas behind it 
entirely yet. I still have some question marks here. Maybe Greg feels the 
same.

Probably when support for macOS is added (also on my todo list), then the 
amount of open fids needs to be limited anyway. Because macOS is much more 
conservative and does not allow a large number of open files by default.

> Anyway, there definitely is room for improvement; if you need ideas I
> have plenty but my time is more than limited right now and for the
> forseeable future... 9p work is purely on my freetime and there isn't
> much at the moment :(
> 
> I'll make time as necessary for reviews & tests but that's about as much
> as I can promise, sorry and good luck!

I fear that applies to all developers right now. To my knowledge there is not 
a single developer either paid and/or able to spend reasonable large time 
slices on 9p issues.

From my side: my plans are to hunt down the worst 9p performance issues in 
order of their impact, but like anybody else, when I find some free time 
slices for that.

#patience #optimistic

Best regards,
Christian Schoenebeck




WARNING: multiple messages have this Message-ID (diff)
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	Dominique Martinet <asmadeus@codewreck.org>,
	"Venegas Munoz,
	Jose Carlos" <jose.carlos.venegas.munoz@intel.com>,
	"cdupontd@redhat.com" <cdupontd@redhat.com>,
	virtio-fs-list <virtio-fs@redhat.com>,
	v9fs-developer@lists.sourceforge.net, "Shinde,
	Archana M" <archana.m.shinde@intel.com>,
	Vivek Goyal <vgoyal@redhat.com>
Subject: Re: [Virtio-fs] Can not set high msize with virtio-9p (Was: Re: virtiofs vs 9p performance)
Date: Fri, 05 Mar 2021 15:57:17 +0100	[thread overview]
Message-ID: <32960057.KqypvAduHN@silver> (raw)
In-Reply-To: <YD+iPTKnOlF/HwlV@codewreck.org>

On Mittwoch, 3. März 2021 15:50:37 CET Dominique Martinet wrote:
> Christian Schoenebeck wrote on Wed, Mar 03, 2021 at 03:04:21PM +0100:
> > > We can definitely increase the default, for all transports in my
> > > opinion.
> > > As a first step, 64 or 128k?
> > 
> > Just to throw some numbers first; when linearly reading a 12 GB file on
> > guest (i.e. "time cat test.dat > /dev/null") on a test machine, these are
> > the results that I get (cache=mmap):
> > 
> > msize=16k: 2min7s (95 MB/s)
> > msize=64k: 17s (706 MB/s)
> > msize=128k: 12s (1000 MB/s)
> > msize=256k: 8s (1500 MB/s)
> > msize=512k: 6.5s (1846 MB/s)
> > 
> > Personally I would raise the default msize value at least to 128k.
> 
> Thanks for the numbers.
> I'm still a bit worried about too large chunks, let's go with 128k for
> now -- I'll send a couple of patches increasing the tcp max/default as
> well next week-ish.

Ok, sounds good!

> > Personally I don't find raw I/O the worst performance issue right now. As
> > you can see from the numbers above, if 'msize' is raised and I/O being
> > performed with large chunk sizes (e.g. 'cat' automatically uses a chunk
> > size according to the iounit advertised by stat) then the I/O results are
> > okay.
> > 
> > What hurts IMO the most in practice is the sluggish behaviour regarding
> > dentries ATM. The following is with cache=mmap (on guest side):
> > 
> > $ time ls /etc/ > /dev/null
> > real    0m0.091s
> > user    0m0.000s
> > sys     0m0.044s
> > $ time ls -l /etc/ > /dev/null
> > real    0m0.259s
> > user    0m0.008s
> > sys     0m0.016s
> > $ ls -l /etc/ | wc -l
> > 113
> > $
> 
> Yes, that is slow indeed.. Unfortunately cache=none/mmap means only open
> dentries are pinned, so that means a load of requests everytime.
> 
> I was going to suggest something like readdirplus or prefetching
> directory entries attributes in parallel/background, but since we're not
> keeping any entries around we can't even do that in that mode.
> 
> > With cache=loose there is some improvement; on the first "ls" run (when
> > its
> > not in the dentry cache I assume) the results are similar. The subsequent
> > runs then improve to around 50ms for "ls" and around 70ms for "ls -l".
> > But that's still far from numbers I would expect.
> 
> I'm surprised cached mode is that slow though, that is worth
> investigating.
> With that time range we are definitely sending more requests to the
> server than I would expect for cache=loose, some stat revalidation
> perhaps? I thought there wasn't any.

Yes, it looks like more 9p requests are sent than actually required for 
readdir. But I haven't checked yet what's going on there in detail. That's 
definitely on my todo list, because this readdir/stat/direntry issue ATM 
really hurts the most IMO.

> I don't like cache=loose/fscache right now as the reclaim mechanism
> doesn't work well as far as I'm aware (I've heard reports of 9p memory
> usage growing ad nauseam in these modes), so while it's fine for
> short-lived VMs it can't really be used for long periods of time as
> is... That's been on my todo for a while too, but unfortunately no time
> for that.

Ok, that's new to me. But I fear the opposite is currently worse; with 
cache=mmap and running a VM for a longer time: 9p requests get slower and 
slower, e.g. at a certain point you're waiting like 20s for one request. I 
haven't investigated the cause here either yet. It may very well be an issue 
on QEMU side: I have some doubts in the fid reclaim algorithm on 9p server 
side which is using just a linked list. Maybe that list is growing to 
ridiculous sizes and searching the list with O(n) starts to hurt after a 
while.

With cache=loose I don't see such tremendous slowdowns even on long runs, 
which might indicate that this symptom might indeed be due to a problem on 
QEMU side.

> Ideally if that gets fixed, it really should be the default with some
> sort of cache revalidation like NFS does (if that hasn't changed, inode
> stats have a lifetime after which they get revalidated on access, and
> directory ctime changes lead to a fresh readdir) ; but we can't really
> do that right now if it "leaks".
> 
> Some cap to the number of open fids could be appreciable as well
> perhaps, to spare server resources and keep internal lists short.

I just reviewed the fid reclaim code on 9p servers side to some extent because 
of a security issue on 9p server side in this area recently, but I haven't 
really thought through nor captured the authors' original ideas behind it 
entirely yet. I still have some question marks here. Maybe Greg feels the 
same.

Probably when support for macOS is added (also on my todo list), then the 
amount of open fids needs to be limited anyway. Because macOS is much more 
conservative and does not allow a large number of open files by default.

> Anyway, there definitely is room for improvement; if you need ideas I
> have plenty but my time is more than limited right now and for the
> forseeable future... 9p work is purely on my freetime and there isn't
> much at the moment :(
> 
> I'll make time as necessary for reviews & tests but that's about as much
> as I can promise, sorry and good luck!

I fear that applies to all developers right now. To my knowledge there is not 
a single developer either paid and/or able to spend reasonable large time 
slices on 9p issues.

>From my side: my plans are to hunt down the worst 9p performance issues in 
order of their impact, but like anybody else, when I find some free time 
slices for that.

#patience #optimistic

Best regards,
Christian Schoenebeck




  reply	other threads:[~2021-03-05 14:59 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-18 21:34 tools/virtiofs: Multi threading seems to hurt performance Vivek Goyal
2020-09-18 21:34 ` [Virtio-fs] " Vivek Goyal
2020-09-21  8:39 ` Stefan Hajnoczi
2020-09-21  8:39   ` [Virtio-fs] " Stefan Hajnoczi
2020-09-21 13:39   ` Vivek Goyal
2020-09-21 13:39     ` [Virtio-fs] " Vivek Goyal
2020-09-21 16:57     ` Stefan Hajnoczi
2020-09-21 16:57       ` [Virtio-fs] " Stefan Hajnoczi
2020-09-21  8:50 ` Dr. David Alan Gilbert
2020-09-21  8:50   ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-21 13:35   ` Vivek Goyal
2020-09-21 13:35     ` [Virtio-fs] " Vivek Goyal
2020-09-21 14:08     ` Daniel P. Berrangé
2020-09-21 14:08       ` [Virtio-fs] " Daniel P. Berrangé
2020-09-21 15:32 ` Dr. David Alan Gilbert
2020-09-21 15:32   ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-22 10:25   ` Dr. David Alan Gilbert
2020-09-22 10:25     ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-22 17:47     ` Vivek Goyal
2020-09-22 17:47       ` [Virtio-fs] " Vivek Goyal
2020-09-24 21:33       ` Venegas Munoz, Jose Carlos
2020-09-24 21:33         ` [Virtio-fs] " Venegas Munoz, Jose Carlos
2020-09-24 22:10         ` virtiofs vs 9p performance(Re: tools/virtiofs: Multi threading seems to hurt performance) Vivek Goyal
2020-09-24 22:10           ` [Virtio-fs] " Vivek Goyal
2020-09-25  8:06           ` virtiofs vs 9p performance Christian Schoenebeck
2020-09-25  8:06             ` [Virtio-fs] " Christian Schoenebeck
2020-09-25 13:13             ` Vivek Goyal
2020-09-25 13:13               ` [Virtio-fs] " Vivek Goyal
2020-09-25 15:47               ` Christian Schoenebeck
2020-09-25 15:47                 ` [Virtio-fs] " Christian Schoenebeck
2021-02-19 16:08             ` Can not set high msize with virtio-9p (Was: Re: virtiofs vs 9p performance) Vivek Goyal
2021-02-19 16:08               ` [Virtio-fs] " Vivek Goyal
2021-02-19 17:33               ` Christian Schoenebeck
2021-02-19 17:33                 ` [Virtio-fs] " Christian Schoenebeck
2021-02-19 19:01                 ` Vivek Goyal
2021-02-19 19:01                   ` [Virtio-fs] " Vivek Goyal
2021-02-20 15:38                   ` Christian Schoenebeck
2021-02-20 15:38                     ` [Virtio-fs] " Christian Schoenebeck
2021-02-22 12:18                     ` Greg Kurz
2021-02-22 12:18                       ` [Virtio-fs] " Greg Kurz
2021-02-22 15:08                       ` Christian Schoenebeck
2021-02-22 15:08                         ` [Virtio-fs] " Christian Schoenebeck
2021-02-22 17:11                         ` Greg Kurz
2021-02-22 17:11                           ` [Virtio-fs] " Greg Kurz
2021-02-23 13:39                           ` Christian Schoenebeck
2021-02-23 13:39                             ` [Virtio-fs] " Christian Schoenebeck
2021-02-23 14:07                             ` Michael S. Tsirkin
2021-02-23 14:07                               ` [Virtio-fs] " Michael S. Tsirkin
2021-02-24 15:16                               ` Christian Schoenebeck
2021-02-24 15:16                                 ` [Virtio-fs] " Christian Schoenebeck
2021-02-24 15:43                                 ` Dominique Martinet
2021-02-24 15:43                                   ` [Virtio-fs] " Dominique Martinet
2021-02-26 13:49                                   ` Christian Schoenebeck
2021-02-26 13:49                                     ` [Virtio-fs] " Christian Schoenebeck
2021-02-27  0:03                                     ` Dominique Martinet
2021-02-27  0:03                                       ` [Virtio-fs] " Dominique Martinet
2021-03-03 14:04                                       ` Christian Schoenebeck
2021-03-03 14:04                                         ` [Virtio-fs] " Christian Schoenebeck
2021-03-03 14:50                                         ` Dominique Martinet
2021-03-03 14:50                                           ` [Virtio-fs] " Dominique Martinet
2021-03-05 14:57                                           ` Christian Schoenebeck [this message]
2021-03-05 14:57                                             ` Christian Schoenebeck
2020-09-25 12:41           ` virtiofs vs 9p performance(Re: tools/virtiofs: Multi threading seems to hurt performance) Dr. David Alan Gilbert
2020-09-25 12:41             ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-25 13:04             ` Christian Schoenebeck
2020-09-25 13:04               ` [Virtio-fs] " Christian Schoenebeck
2020-09-25 13:05               ` Dr. David Alan Gilbert
2020-09-25 13:05                 ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-25 16:05                 ` Christian Schoenebeck
2020-09-25 16:05                   ` [Virtio-fs] " Christian Schoenebeck
2020-09-25 16:33                   ` Christian Schoenebeck
2020-09-25 16:33                     ` [Virtio-fs] " Christian Schoenebeck
2020-09-25 18:51                   ` Dr. David Alan Gilbert
2020-09-25 18:51                     ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-27 12:14                     ` Christian Schoenebeck
2020-09-27 12:14                       ` [Virtio-fs] " Christian Schoenebeck
2020-09-29 13:03                       ` Vivek Goyal
2020-09-29 13:03                         ` [Virtio-fs] " Vivek Goyal
2020-09-29 13:28                         ` Christian Schoenebeck
2020-09-29 13:28                           ` [Virtio-fs] " Christian Schoenebeck
2020-09-29 13:49                           ` Vivek Goyal
2020-09-29 13:49                             ` [Virtio-fs] " Vivek Goyal
2020-09-29 13:59                             ` Christian Schoenebeck
2020-09-29 13:59                               ` [Virtio-fs] " Christian Schoenebeck
2020-09-29 13:17             ` Vivek Goyal
2020-09-29 13:17               ` [Virtio-fs] " Vivek Goyal
2020-09-29 13:49               ` Miklos Szeredi
2020-09-29 13:49                 ` Miklos Szeredi
2020-09-29 14:01                 ` Vivek Goyal
2020-09-29 14:01                   ` Vivek Goyal
2020-09-29 14:54                   ` Miklos Szeredi
2020-09-29 14:54                     ` Miklos Szeredi
2020-09-29 15:28                 ` Vivek Goyal
2020-09-29 15:28                   ` Vivek Goyal
2020-09-25 12:11       ` tools/virtiofs: Multi threading seems to hurt performance Dr. David Alan Gilbert
2020-09-25 12:11         ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-25 13:11         ` Vivek Goyal
2020-09-25 13:11           ` [Virtio-fs] " Vivek Goyal
2020-09-21 20:16 ` Vivek Goyal
2020-09-21 20:16   ` [Virtio-fs] " Vivek Goyal
2020-09-22 11:09   ` Dr. David Alan Gilbert
2020-09-22 11:09     ` [Virtio-fs] " Dr. David Alan Gilbert
2020-09-22 22:56     ` Vivek Goyal
2020-09-22 22:56       ` [Virtio-fs] " Vivek Goyal
2020-09-23 12:50 ` Chirantan Ekbote
2020-09-23 12:59   ` Vivek Goyal
2020-09-25 11:35   ` Dr. David Alan Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=32960057.KqypvAduHN@silver \
    --to=qemu_oss@crudebyte.com \
    --cc=archana.m.shinde@intel.com \
    --cc=asmadeus@codewreck.org \
    --cc=cdupontd@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=groug@kaod.org \
    --cc=jose.carlos.venegas.munoz@intel.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=v9fs-developer@lists.sourceforge.net \
    --cc=vgoyal@redhat.com \
    --cc=virtio-fs@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.