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
next prev 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.