From: Kevin Wolf <kwolf@redhat.com>
To: "Richard W.M. Jones" <rjones@redhat.com>
Cc: Fam Zheng <famz@redhat.com>, Hu Tao <hutao@cn.fujitsu.com>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Yasunori Goto <y-goto@jp.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH v13 5/6] raw-posix: Add full preallocation option
Date: Thu, 4 Sep 2014 17:23:21 +0200 [thread overview]
Message-ID: <20140904152321.GM3897@noname.str.redhat.com> (raw)
In-Reply-To: <20140904134307.GD1302@redhat.com>
Am 04.09.2014 um 15:43 hat Richard W.M. Jones geschrieben:
> On Thu, Sep 04, 2014 at 03:17:51PM +0200, Kevin Wolf wrote:
> > Am 04.09.2014 um 15:07 hat Richard W.M. Jones geschrieben:
> > > On Thu, Sep 04, 2014 at 02:52:57PM +0200, Kevin Wolf wrote:
> > > > Am 04.09.2014 um 14:45 hat Richard W.M. Jones geschrieben:
> > > > > On Thu, Sep 04, 2014 at 02:35:22PM +0200, Kevin Wolf wrote:
> > > > > > Please change the code to always write zeros for FULL,
> > > > >
> > > > > How is this useful for anyone? You don't know if the underlying SAN
> > > > > is going to detect these zeroes or combine these blocks together.
> > > > > It's just slow for no reason.
> > > >
> > > > It's slow for the reason that the user has requested it. Do you doubt
> > > > that users can know what their backend is doing? Why are you insisting
> > > > on providing only the functionality that you personally need?
> > >
> > > I'm not! I'm trying to make sure we don't end up with a qemu
> > > interface which is useless for higher layers. You're proposing
> > > preallocation=full which will be slow but not actually give any
> > > guarantees, or preallocation=meta which is going to be fast but may
> > > not work, and I'm saying that's a dumb interface that's not useful.
> >
> > So what you propose is an interface that combines both and may
> > unpredictably be slow or fast, and doesn't give any guarantees either.
> > Why would this be any better?
> >
> > What is your specific use case of full preallocation that wants zero
> > writing, but only implicitly as a fallback? My expectation is that most
> > users want cheap preallocation if it's available, but don't bother to
> > write many gigabytes if it isn't.
>
> Stepping back, I think what we have are two general approaches:
>
> - do the exact thing I want
>
> - do the best effort you can
>
> [...]
>
> And it's not just here. qemu has other places where we'd like "do the
> best thing", not "do the exact thing" ... off the top of my head:
> selecting -cpu, discard support, O_DIRECT. Libguestfs has to go
> through hoops in these areas, often involving very hairy workarounds
> which reduce reliability. I'm not saying that more exact options
> aren't also welcome, but doing the best effort is very useful too.
The point is that different people have different ideas of what "do the
best thing" is. You may be surprised to learn that generally we don't
roll a dice to select our defaults, but do it based on what we think is
the best thing overall. And yes, because we have less information than
management tools, it often means that we have to take more conservative
defaults (works for everyone) than what you would want (all the features
that your shiny new guest can use).
> virt-manager, virt-install, virt-clone, libvirt, libguestfs, all
> currently do preallocation with fallback to writing data (via
> hand-written code). The reason is that customers using simple disks
> (not SANs etc) just want to be sure they're not going to run out of
> space during OS installation. For the vast majority of users,
> posix_fallocate makes this fast, but people using ext2 or *BSD get the
> slow-but-safe path.
Is this really a concern for many users? I think I never preallocated an
image to make sure it fits. If anything, I run df first, but generally I
assume that it works and if it doesn't, I check what happened.
Basically all users I saw asking for preallocation did it because they
were worried about performance and wanted to get rid of the overhead of
metadata updates during allocations.
> Now it may be that some qemu users are going to want a very exact
> preallocation mode, but that doesn't mean we can't have
> preallocation=besteffort too.
The definition of "besteffort" depends on what you want to achieve. It
is policy, and we generally try to keep policy out of qemu.
It isn't really clear that "make absolutely sure that you never get
-ENOSPC on the file system level, but in the layers below it's okay, and
the resulting performance doesn't matter" is the best thing for everyone.
Kevin
next prev parent reply other threads:[~2014-09-04 15:23 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-29 8:33 [Qemu-devel] [PATCH v13 0/6] qcow2, raw: add preallocation=full Hu Tao
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 1/6] block: round up file size to nearest sector Hu Tao
2014-08-29 12:50 ` Eric Blake
2014-09-04 9:33 ` Kevin Wolf
2014-09-02 21:21 ` Max Reitz
2014-09-04 9:43 ` Kevin Wolf
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 2/6] block: don't convert file size to sector size Hu Tao
2014-09-02 21:24 ` Max Reitz
2014-09-04 9:57 ` Kevin Wolf
2014-09-05 9:07 ` Hu Tao
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 3/6] rename parse_enum_option to qapi_enum_parse and make it public Hu Tao
2014-09-02 21:27 ` Max Reitz
2014-09-03 1:30 ` Hu Tao
2014-09-04 10:03 ` Kevin Wolf
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 4/6] qapi: introduce PreallocMode and a new PreallocMode full Hu Tao
2014-09-02 21:32 ` Max Reitz
2014-09-03 1:31 ` Hu Tao
2014-09-02 21:51 ` Eric Blake
2014-09-03 1:35 ` Hu Tao
2014-09-04 12:17 ` Kevin Wolf
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 5/6] raw-posix: Add full preallocation option Hu Tao
2014-08-29 8:48 ` Richard W.M. Jones
2014-09-03 1:26 ` Hu Tao
2014-09-04 8:32 ` Hu Tao
2014-09-02 21:45 ` Max Reitz
2014-09-03 1:55 ` Hu Tao
2014-09-04 12:35 ` Kevin Wolf
2014-09-04 12:45 ` Richard W.M. Jones
2014-09-04 12:52 ` Kevin Wolf
2014-09-04 13:07 ` Richard W.M. Jones
2014-09-04 13:13 ` Daniel P. Berrange
2014-09-04 13:17 ` Kevin Wolf
2014-09-04 13:43 ` Richard W.M. Jones
2014-09-04 15:23 ` Kevin Wolf [this message]
2014-09-04 15:33 ` Richard W.M. Jones
2014-08-29 8:33 ` [Qemu-devel] [PATCH v13 6/6] qcow2: " Hu Tao
2014-09-02 21:55 ` Max Reitz
2014-09-04 13:09 ` Kevin Wolf
2014-09-09 3:23 ` Hu Tao
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=20140904152321.GM3897@noname.str.redhat.com \
--to=kwolf@redhat.com \
--cc=famz@redhat.com \
--cc=hutao@cn.fujitsu.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@redhat.com \
--cc=y-goto@jp.fujitsu.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).