From: Nir Soffer <nsoffer@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: "Richard W.M. Jones" <rjones@redhat.com>,
edgar.kaziakhmedov@virtuozzo.com,
QEMU Developers <qemu-devel@nongnu.org>,
qemu-block <qemu-block@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-block] Change in qemu 2.12 causes qemu-img convert to NBD to write more data
Date: Wed, 7 Nov 2018 19:55:10 +0200 [thread overview]
Message-ID: <CAMRbyys2XVgjPx9HteGP8c6R5rPM=n86m30kfEG6a0+c-jLZ4g@mail.gmail.com> (raw)
In-Reply-To: <20181107172737.GB4721@linux.fritz.box>
On Wed, Nov 7, 2018 at 7:27 PM Kevin Wolf <kwolf@redhat.com> wrote:
> Am 07.11.2018 um 15:56 hat Nir Soffer geschrieben:
> > Wed, Nov 7, 2018 at 4:36 PM Richard W.M. Jones <rjones@redhat.com>
> wrote:
> >
> > > Another thing I tried was to change the NBD server (nbdkit) so that it
> > > doesn't advertise zero support to the client:
> > >
> > > $ nbdkit --filter=log --filter=nozero memory size=6G
> logfile=/tmp/log \
> > > --run './qemu-img convert ./fedora-28.img -n $nbd'
> > > $ grep '\.\.\.$' /tmp/log | sed 's/.*\([A-Z][a-z]*\).*/\1/' | uniq -c
> > > 2154 Write
> > >
> > > Not surprisingly no zero commands are issued. The size of the write
> > > commands is very uneven -- it appears to be send one command per block
> > > of zeroes or data.
> > >
> > > Nir: If we could get information from imageio about whether zeroing is
> > > implemented efficiently or not by the backend, we could change
> > > virt-v2v / nbdkit to advertise this back to qemu.
> >
> > There is no way to detect the capability, ioctl(BLKZEROOUT) always
> > succeeds, falling back to manual zeroing in the kernel silently
> >
> > Even if we could, sending zero on the wire from qemu may be even
> > slower, and it looks like qemu send even more requests in this case
> > (2154 vs ~1300).
> >
> > Looks like this optimization in qemu side leads to worse performance,
> > so it should not be enabled by default.
>
> Well, that's overgeneralising your case a bit. If the backend does
> support efficient zero writes (which file systems, the most common case,
> generally do), doing one big write_zeroes request at the start can
> improve performance quite a bit.
>
> It seems the problem is that we can't really know whether the operation
> will be efficient because the backends generally don't tell us. Maybe
> NBD could introduce a flag for this, but in the general case it appears
> to me that we'll have to have a command line option.
>
> However, I'm curious what your exact use case and the backend used in it
> is? Can something be improved there to actually get efficient zero
> writes and get even better performance than by just disabling the big
> zero write?
The backend is some NetApp storage connected via FC. I don't have
more info on this. We get zero rate of about 1G/s on this storage, which
is quite slow compared with other storage we tested.
One option we check now is if this is the kernel silent fallback to manual
zeroing when the server advertise wrong value of write_same_max_bytes.
Having a command line option to control this behavior sounds good. I don't
have enough data to tell what should be the default, but I think the safe
way would be to keep old behavior.
Nir
next prev parent reply other threads:[~2018-11-07 17:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-07 12:13 [Qemu-devel] Change in qemu 2.12 causes qemu-img convert to NBD to write more data Richard W.M. Jones
2018-11-07 14:36 ` Richard W.M. Jones
2018-11-07 14:56 ` Nir Soffer
2018-11-07 15:02 ` Richard W.M. Jones
2018-11-07 17:27 ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2018-11-07 17:55 ` Nir Soffer [this message]
2018-11-11 16:11 ` Nir Soffer
2018-11-15 22:27 ` Nir Soffer
2018-11-16 15:26 ` Kevin Wolf
2018-11-17 20:59 ` Nir Soffer
2018-11-17 21:13 ` Richard W.M. Jones
2018-11-18 7:24 ` Nir Soffer
2018-11-19 11:50 ` Kevin Wolf
2018-11-07 16:42 ` [Qemu-devel] " Eric Blake
2018-11-11 15:25 ` Nir Soffer
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='CAMRbyys2XVgjPx9HteGP8c6R5rPM=n86m30kfEG6a0+c-jLZ4g@mail.gmail.com' \
--to=nsoffer@redhat.com \
--cc=edgar.kaziakhmedov@virtuozzo.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rjones@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).