]> git.proxmox.com Git - mirror_qemu.git/commit - blockdev.c
block: optimize zero writes with bdrv_write_zeroes
authorPeter Lieven <pl@kamp.de>
Sat, 17 May 2014 22:58:19 +0000 (00:58 +0200)
committerKevin Wolf <kwolf@redhat.com>
Mon, 19 May 2014 11:42:27 +0000 (13:42 +0200)
commit465bee1da82e43f18d10c43cc7566d0284ad13a9
treec98c26268e8f10a77bfc39abb72f72f8c7ac9ee8
parent82a402e99f3f8c6177528ad6d561bf07ff6ee606
block: optimize zero writes with bdrv_write_zeroes

this patch tries to optimize zero write requests
by automatically using bdrv_write_zeroes if it is
supported by the format.

This significantly speeds up file system initialization and
should speed zero write test used to test backend storage
performance.

I ran the following 2 tests on my internal SSD with a
50G QCOW2 container and on an attached iSCSI storage.

a) mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vdX

QCOW2         [off]     [on]     [unmap]
-----
runtime:       14secs    1.1secs  1.1secs
filesize:      937M      18M      18M

iSCSI         [off]     [on]     [unmap]
----
runtime:       9.3s      0.9s     0.9s

b) dd if=/dev/zero of=/dev/vdX bs=1M oflag=direct

QCOW2         [off]     [on]     [unmap]
-----
runtime:       246secs   18secs   18secs
filesize:      51G       192K     192K
throughput:    203M/s    2.3G/s   2.3G/s

iSCSI*        [off]     [on]     [unmap]
----
runtime:       8mins     45secs   33secs
throughput:    106M/s    1.2G/s   1.6G/s
allocated:     100%      100%     0%

* The storage was connected via an 1Gbit interface.
  It seems to internally handle writing zeroes
  via WRITESAME16 very fast.

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c
block/qapi.c
blockdev.c
hmp.c
include/block/block_int.h
qapi-schema.json
qemu-options.hx
qmp-commands.hx
tests/qemu-iotests/067.out