All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shahar Frank <sfrank@redhat.com>
To: qemu-devel@nongnu.org
Cc: Uri Lublin <uril@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 0/3] info blockstats (block-qcow2): show highest allocated offset (bytes)
Date: Sun, 11 Jan 2009 16:56:25 +0200	[thread overview]
Message-ID: <496A0899.7010707@redhat.com> (raw)
In-Reply-To: <49671463.8050402@suse.de>

Kevin Wolf wrote:
> Uri Lublin schrieb:
>> Although there may be many free blocks below that number (allocated and
>> freed)
>> the file system can not deallocate those blocks, and they have to be reused
>> by qemu. Also note that due to fragmentation those free blocks may not
>> be used on next allocations.
> 
> Any idea what would it mean to performance if we changed the behaviour
> so that s->free_cluster_index always points to lowest free cluster? Then
> most of the fragmentation should be gone.
> 
free_cluster_index if already pointing the lowest known free space. The 
problem is that the its update logic is very simplistic so an allocation 
of multiple clusters may cause this pointer to skip many single (in fact 
  it will skip all cluster sequences that are shorter than the requested 
number), so the next allocation may miss it. This will increase the 
fragmentation. Note that it wasn't so important until Laurent Vivier 
implemented his optimizations that allocated cluster sequences.

see block-qcow2.c:alloc_clusters_noref() and
block-qcow2.c: update_cluster_refcount()

> If the impact would be too big we could still change the code to use two
> free_cluster_indexes, one for single cluster allocation and one for
> larger blocks. This was suggested earlier and I think there were even
> patches for it, but I don't seem to remember who exactly suggested this.
> 

I suggested it as part of the first zero-dedup patch, and that was 
because I suspected that the zero dedup may increase fragmentation due 
that simplistic free cluster indexes. In fact, having two or even 
several free pointers is probably a step in the right direction, but we 
may need some better allocation mechanism to really solve the problem 
(btree+ structure, or something else). The target should be a decent 
extend based allocation. This improve qcow2 performance and handle he 
fragmentation problem. The problem is that it will probably change the 
qcow2 internals, so may better implement a simple approach for qcow2 and 
start designing qcow3...

> Kevin
> 
> 

Shahar

  parent reply	other threads:[~2009-01-11 14:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-08 18:49 [Qemu-devel] [PATCH 0/3] info blockstats (block-qcow2): show highest allocated offset (bytes) Uri Lublin
2009-01-08 19:37 ` Anthony Liguori
2009-01-11  9:26   ` Uri Lublin
2009-01-11 15:16     ` Shahar Frank
2009-01-09  9:09 ` Kevin Wolf
2009-01-11  9:31   ` Uri Lublin
2009-01-11 14:56   ` Shahar Frank [this message]
2009-01-12  9:50     ` Kevin Wolf

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=496A0899.7010707@redhat.com \
    --to=sfrank@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=uril@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.