All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: fam@euphon.net, qemu-block@nongnu.org, qemu-devel@nongnu.org,
	mreitz@redhat.com, stefanha@redhat.com, den@openvz.org
Subject: Re: [Qemu-devel] [PATCH v2 2/2] block: avoid recursive block_status call if possible
Date: Wed, 22 May 2019 12:32:50 +0200	[thread overview]
Message-ID: <20190522103250.GC6087@localhost.localdomain> (raw)
In-Reply-To: <20190408162617.258535-3-vsementsov@virtuozzo.com>

Am 08.04.2019 um 18:26 hat Vladimir Sementsov-Ogievskiy geschrieben:
> drv_co_block_status digs bs->file for additional, more accurate search
> for hole inside region, reported as DATA by bs since 5daa74a6ebc.
> 
> This accuracy is not free: assume we have qcow2 disk. Actually, qcow2
> knows, where are holes and where is data. But every block_status
> request calls lseek additionally. Assume a big disk, full of
> data, in any iterative copying block job (or img convert) we'll call
> lseek(HOLE) on every iteration, and each of these lseeks will have to
> iterate through all metadata up to the end of file. It's obviously
> ineffective behavior. And for many scenarios we don't need this lseek
> at all.
> 
> However, lseek is needed when we have metadata-preallocated image.
> 
> So, let's detect metadata-preallocation case and don't dig qcow2's
> protocol file in other cases.
> 
> The idea is to compare allocation size in POV of filesystem with
> allocations size in POV of Qcow2 (by refcounts). If allocation in fs is
> significantly lower, consider it as metadata-preallocation case.
> 
> 102 iotest changed, as our detector can't detect shrinked file as
> metadata-preallocation, which don't seem to be wrong, as with metadata
> preallocation we always have valid file length.
> 
> Other two iotests tiny changed QMP output sequence, which should be
> exactly because skipped lseek at mirror beginning.

No, these hunks don't show an improvement. An earlier {'return':{}}
means that the block job coroutine has yielded earlier, so it's doing a
blocking operation where it didn't do one before the patch.

What happens is that qcow2_detect_metadata_preallocation() causes
additional I/O by reading in the refcount block.

I'll modify the commit message accordingly while applying.

Kevin


  reply	other threads:[~2019-05-22 10:34 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-08 16:26 [Qemu-devel] [PATCH v2 for 4.1 0/2] avoid lseek on block_status Vladimir Sementsov-Ogievskiy
2019-04-08 16:26 ` Vladimir Sementsov-Ogievskiy
2019-04-08 16:26 ` [Qemu-devel] [PATCH v2 1/2] tests/perf: Test lseek influence on qcow2 block-status Vladimir Sementsov-Ogievskiy
2019-04-08 16:26   ` Vladimir Sementsov-Ogievskiy
2019-04-08 16:26 ` [Qemu-devel] [PATCH v2 2/2] block: avoid recursive block_status call if possible Vladimir Sementsov-Ogievskiy
2019-04-08 16:26   ` Vladimir Sementsov-Ogievskiy
2019-05-22 10:32   ` Kevin Wolf [this message]
2019-05-27 15:13   ` Max Reitz
2019-05-28  6:39     ` Vladimir Sementsov-Ogievskiy
2019-05-28 15:47       ` Max Reitz
2019-04-22  9:58 ` [Qemu-devel] [PATCH v2 for 4.1 0/2] avoid lseek on block_status Vladimir Sementsov-Ogievskiy
2019-04-22  9:58   ` Vladimir Sementsov-Ogievskiy
2019-05-06 15:14 ` Vladimir Sementsov-Ogievskiy
2019-05-21  7:50 ` [Qemu-devel] ping " Vladimir Sementsov-Ogievskiy
2019-05-22 10:47 ` [Qemu-devel] " Kevin Wolf
2019-05-22 11:30   ` Vladimir Sementsov-Ogievskiy

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=20190522103250.GC6087@localhost.localdomain \
    --to=kwolf@redhat.com \
    --cc=den@openvz.org \
    --cc=fam@euphon.net \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@virtuozzo.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.