qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 19/19] block/parallels: optimize linear image ex


From: Denis V. Lunev
Subject: Re: [Qemu-devel] [PATCH 19/19] block/parallels: optimize linear image expansion
Date: Wed, 14 Jan 2015 20:57:39 +0300
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.3.0

On 14/01/15 20:56, Roman Kagan wrote:
On Tue, Dec 30, 2014 at 01:07:12PM +0300, Denis V. Lunev wrote:
Plain image expansion spends a lot of time to update image file size.
This seriously affects the performance. The following simple test
   qemu_img create -f parallels -o cluster_size=64k ./1.hds 64G
   qemu_io -n -c "write -P 0x11 0 1024M" ./1.hds
could be improved if the format driver will pre-allocate some space
in the image file with a reasonable chunk.

This patch preallocates 128 Mb using bdrv_write_zeroes, which should
normally use fallocate() call inside. Fallback to older truncate()
could be used as a fallback using image open options thanks to the
previous patch.

The benefit is around 15%.

This patch is final in this series. Block driver has near native
performance now.

Signed-off-by: Denis V. Lunev <address@hidden>
CC: Kevin Wolf <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
---
  block/parallels.c | 35 +++++++++++++++++++++++++++++++++--
  1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/block/parallels.c b/block/parallels.c
index 12a9cea..5ec4a0d 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -82,6 +82,7 @@ typedef struct BDRVParallelsState {
      int bat_cache_off;
      int data_off;
+ int64_t prealloc_off;
This field name confused me.  I think "data_end" would fit better.

Otherwise looks good to me.

Roman.
agree



reply via email to

[Prev in Thread] Current Thread [Next in Thread]