qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [patch 0/5][v2] qcow2: improve I/O performance with cac


From: Anthony Liguori
Subject: Re: [Qemu-devel] [patch 0/5][v2] qcow2: improve I/O performance with cache=off
Date: Tue, 29 Jul 2008 14:15:11 -0500
User-agent: Thunderbird 2.0.0.14 (X11/20080501)

Laurent Vivier wrote:
These patches improve qcow2 performance when used with cache=off.

They modify block-qcow2.c to read/write as many clusters as
possible per bdrv_aio_[read|write]().

This patch series looks like a pretty good clean up of the code. The perf improvement is a nice side effect too.

I'm a little concerned about how much code this touches though. How much testing have you done of these changes? Have you tested all of the corner cases (backing files, filling up a disk image, etc.)?

Regards,

Anthony Liguori

Some benchmarks:

* mkfs on 500 MB qcow2 disk

mkfs                            WITHOUT         WITH

ide, cache=off,snapshot=off     41 s            5 s     8x faster
ide, cache=off,snapshot=on      40 s            5 s     8x faster
ide, cache=on, snapshot=off      3 s            3 s
ide, cache=on, snapshot=on       4 s            3 s

* tar jxvf linux-2.6.25.7.tar.bz2

ide, cache=off,snapshot=off     847 s           379 s   2.2x faster
ide, cache=off,snapshot=on      801 s           364 s   2.2x faster
ide, cache=on, snapshot=off     238 s           236 s
ide, cache=on, snapshot=on      236 s           237 s

* dd if=/dev/zero of=file

dd if=/dev/null                 WITHOUT         WITH

ide, cache=off,snapshot=off     333 kB/s        3.7 MB/s  11.3x faster
ide, cache=off,snapshot=on      337 kB/s        3.6 MB/s  10.9x faster
ide, cache=on, snapshot=off    9.06 MB/s        9.23 MB/s
ide, cache=on, snapshot=on     8,89 MB/s        8.89 MB/s

* dbench 1

dbench                          WITHOUT          WITH

ide, cache=off,snapshot=off     20.8494 MB/sec  24.8521 MB/sec          +19,2%
ide, cache=off,snapshot=on      20.9349 MB/sec  24.2296 MB/sec          +15,7%
ide, cache=on, snapshot=off     23.6612 MB/sec  25.4724 MB/sec          + 7,6%
ide, cache=on, snapshot=on      24.1836 MB/sec  24.8169 MB/sec

[PATCH 1/5] extract code from get_cluster_offset() into new functions
            seek_l2_table(), l2_load() and l2_allocate().

[PATCH 2/5] divide get_cluster_offset() into get_cluster_offset() and
            alloc_cluster_offset().

[PATCH 3/5] divide alloc_cluster_offset() into alloc_cluster_offset()
            and alloc_compressed_cluster_offset(). Factorize code
            to free clusters into free_used_clusters().

[PATCH 4/5] modify get_cluster_offset(), alloc_cluster_offset() and free_used_clusters() to specify how many clusters we
            want.

[PATCH 5/5] in free_used_clusters(), try to aggregate free clusters
            and freed clusters.

Laurent
--







reply via email to

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