[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 0/5][v3] Improve qcow2 performance when used with ca
From: |
Laurent . Vivier |
Subject: |
[Qemu-devel] [patch 0/5][v3] Improve qcow2 performance when used with cache=off. |
Date: |
Wed, 13 Aug 2008 16:59:00 +0200 |
User-agent: |
quilt/0.45-1 |
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]().
These patches have been tested several hours, with normal disk, encrypted disk,
compressed disk and with backing file or not.
Tests were done with mkfs, untar of kernel source, build of kernel
sources, rm of all files, dbench 1, dbench 16 and dd to fill the disk (500 MB).
fsck is used every time to check filesystem consistency.
Some benchmarks (from [v2]):
* 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
Changelog:
v2: follow the advice of Avi kivity, and modify get_cluster_offset()
v3: follow comments from Kevin Wolf, and add some comments, remove
free_used_clusters().
follow comments from Anthony Liguori, and make more tests,
correct a SEGV with encrypted disk (too small buffer),
and a file corruption on commit.
[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().
[PATCH 4/5] modify get_cluster_offset(), alloc_cluster_offset() to specify
how many clusters we want.
[PATCH 5/5] in alloc_cluster_offset(), try to aggregate free clusters
and freed clusters.
--
- [Qemu-devel] [patch 0/5][v3] Improve qcow2 performance when used with cache=off.,
Laurent . Vivier <=