qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Max Reitz <mreitz@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Peter Lieven <pl@kamp.de>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 00/12] qcow2: Add new overlap check functions
Date: Mon, 24 Nov 2014 09:56:32 -0700	[thread overview]
Message-ID: <54736340.6030003@redhat.com> (raw)
In-Reply-To: <1416844620-17717-1-git-send-email-mreitz@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2441 bytes --]

On 11/24/2014 08:56 AM, Max Reitz wrote:
> As has been requested, this series adds new overlap check functions to
> the qcow2 code. My local branch is called "qcow2-improved-overlap-v1",
> but I am not so sure whether it is actually an improvement; that is left
> for you to decide, dear reviewers.
> 

> 
> The problem with this series is obviously that all the metadata
> information is read when reading a qcow2 image. iotest 044 is a good
> test for this. I personally haven't seen a problem here, but I can't
> outrule any. I never noticed any waits when opening images.

I have another reason for WANTING to read the qcow2 metadata up front
when opening an image.  Right now, the 'query-blockstats' QMP command
reports a wr_highest_offset field (I don't know if it has any decent use
besides for qcow2 images on raw block devices, but it was part of the
design long before we had image-specific stats).  However, this field is
ALWAYS reported as 0 for backing images in a chain when qemu first
boots, because the current code base does not update the field UNTIL the
first allocating write to a file (whether that is a data write, or
whether it is something metadata-only such as creating and destroying a
temporary internal snapshot).  When doing a block commit operation, the
field becomes useful for predicting how fast the backing qcow2 file is
growing as part of the commit operation - but since the field starts
life at 0 instead of the real size of the file, it leads to some very
awkward startup code.  If we parse all qcow2 metadata up front when
opening a file, then we trivially have the correct wr_highest_offset
instead of 0, even for a read-only image.


> 
> tl;dr
> =====
> 
> * CPU usage at runtime decreased by 150 to 275 percent on
>   overlap-check-heavy tasks
> * No additional performance problems at loading time (in theory has the
>   same runtime complexity as a single overlap check right now; in
>   practice I could not find any problems)
> * Decent RAM usage (40 kB for a 1 TB image with 64 kB clusters; 40 MB
>   for a 1 PB image etc. pp.)
> 

Sounds reasonable to me.  Although I'm not sure if it counts as a bug
fix, so I'm not sure if we should try to rush it into 2.2 (yes,
performance CAN be a bug, but it is late to be adding complex code).

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 539 bytes --]

  parent reply	other threads:[~2014-11-24 16:56 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-24 15:56 [Qemu-devel] [PATCH v2 00/12] qcow2: Add new overlap check functions Max Reitz
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 01/12] " Max Reitz
2014-11-25 11:02   ` Max Reitz
2015-01-21 16:53   ` Stefan Hajnoczi
2015-01-21 22:12     ` Max Reitz
2015-02-03 23:08   ` Eric Blake
2015-02-04 16:29     ` Max Reitz
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 02/12] qcow2: Pull up overlap check option evaluation Max Reitz
2015-02-03 23:33   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 03/12] qcow2: Create metadata list Max Reitz
2015-02-03 23:34   ` Eric Blake
2015-02-04 16:31     ` Max Reitz
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 04/12] qcow2/overlaps: Protect image header Max Reitz
2015-02-03 23:47   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 05/12] qcow2/overlaps: Protect refcount table Max Reitz
2015-02-03 23:55   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 06/12] qcow2/overlaps: Protect refcount blocks Max Reitz
2015-02-05  1:24   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 07/12] qcow2/overlaps: Protect active L1 table Max Reitz
2015-02-05  1:25   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 08/12] qcow2/overlaps: Protect active L2 tables Max Reitz
2015-02-05 15:27   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 09/12] qcow2/overlaps: Protect snapshot table Max Reitz
2015-02-05 15:29   ` Eric Blake
2015-02-05 15:30     ` Max Reitz
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 10/12] qcow2/overlaps: Protect inactive L1 tables Max Reitz
2015-02-05 19:41   ` Eric Blake
2014-11-24 15:56 ` [Qemu-devel] [PATCH v2 11/12] qcow2/overlaps: Protect inactive L2 tables Max Reitz
2015-01-21 15:23   ` Stefan Hajnoczi
2015-01-21 16:07     ` Max Reitz
2014-11-24 15:57 ` [Qemu-devel] [PATCH v2 12/12] qcow2: Use new metadata overlap check function Max Reitz
2015-01-21 15:28   ` Stefan Hajnoczi
2014-11-24 16:56 ` Eric Blake [this message]
2014-11-24 17:35 ` [Qemu-devel] [PATCH v2 00/12] qcow2: Add new overlap check functions Max Reitz
2014-11-25 10:55 ` Max Reitz
2014-11-25 13:25 ` Stefan Hajnoczi
2014-12-15  9:43 ` Max Reitz
2015-01-20 22:48 ` Max Reitz

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=54736340.6030003@redhat.com \
    --to=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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).